Left Termination of the query pattern times_in_3(a, a, g) w.r.t. the given Prolog program could not be shown:



Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof

Clauses:

add(b, b, b).
add(X, b, X) :- binaryZ(X).
add(b, Y, Y) :- binaryZ(Y).
add(X, Y, Z) :- addz(X, Y, Z).
addx(one(X), b, one(X)) :- binary(X).
addx(zero(X), b, zero(X)) :- binaryZ(X).
addx(X, Y, Z) :- addz(X, Y, Z).
addy(b, one(Y), one(Y)) :- binary(Y).
addy(b, zero(Y), zero(Y)) :- binaryZ(Y).
addy(X, Y, Z) :- addz(X, Y, Z).
addz(zero(X), zero(Y), zero(Z)) :- addz(X, Y, Z).
addz(zero(X), one(Y), one(Z)) :- addx(X, Y, Z).
addz(one(X), zero(Y), one(Z)) :- addy(X, Y, Z).
addz(one(X), one(Y), zero(Z)) :- addc(X, Y, Z).
addc(b, b, one(b)).
addc(X, b, Z) :- succZ(X, Z).
addc(b, Y, Z) :- succZ(Y, Z).
addc(X, Y, Z) :- addC(X, Y, Z).
addX(zero(X), b, one(X)) :- binaryZ(X).
addX(one(X), b, zero(Z)) :- succ(X, Z).
addX(X, Y, Z) :- addC(X, Y, Z).
addY(b, zero(Y), one(Y)) :- binaryZ(Y).
addY(b, one(Y), zero(Z)) :- succ(Y, Z).
addY(X, Y, Z) :- addC(X, Y, Z).
addC(zero(X), zero(Y), one(Z)) :- addz(X, Y, Z).
addC(zero(X), one(Y), zero(Z)) :- addX(X, Y, Z).
addC(one(X), zero(Y), zero(Z)) :- addY(X, Y, Z).
addC(one(X), one(Y), one(Z)) :- addc(X, Y, Z).
binary(b).
binary(zero(X)) :- binaryZ(X).
binary(one(X)) :- binary(X).
binaryZ(zero(X)) :- binaryZ(X).
binaryZ(one(X)) :- binary(X).
succ(b, one(b)).
succ(zero(X), one(X)) :- binaryZ(X).
succ(one(X), zero(Z)) :- succ(X, Z).
succZ(zero(X), one(X)) :- binaryZ(X).
succZ(one(X), zero(Z)) :- succ(X, Z).
times(one(b), X, X).
times(zero(R), S, zero(RS)) :- times(R, S, RS).
times(one(R), S, RSS) :- ','(times(R, S, RS), add(S, zero(RS), RSS)).

Queries:

times(a,a,g).

We use the technique of [30]. With regard to the inferred argument filtering the predicates were used in the following modes:
times_in: (f,f,b) (f,f,f)
add_in: (f,f,f) (f,f,b)
binaryZ_in: (f) (b)
binary_in: (f) (b)
addz_in: (f,f,f) (f,f,b)
addx_in: (f,f,f) (f,f,b)
addy_in: (f,f,f) (f,f,b)
addc_in: (f,f,f) (f,f,b)
succZ_in: (f,f) (f,b)
succ_in: (f,f) (f,b)
addC_in: (f,f,f) (f,f,b)
addX_in: (f,f,f) (f,f,b)
addY_in: (f,f,f) (f,f,b)
Transforming Prolog into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g
U27_g(x1, x2)  =  U27_g(x2)
binaryZ_out_g(x1)  =  binaryZ_out_g
U28_g(x1, x2)  =  U28_g(x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2)
U14_aag(x1, x2, x3)  =  U14_aag(x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1)
U34_ag(x1, x2, x3)  =  U34_ag(x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x3)
U15_aag(x1, x2, x3)  =  U15_aag(x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2)
U18_aag(x1, x2, x3)  =  U18_aag(x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2)
U21_aag(x1, x2, x3)  =  U21_aag(x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x4)

Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog



↳ Prolog
  ↳ PrologToPiTRSProof
PiTRS
      ↳ DependencyPairsProof
  ↳ PrologToPiTRSProof

Pi-finite rewrite system:
The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g
U27_g(x1, x2)  =  U27_g(x2)
binaryZ_out_g(x1)  =  binaryZ_out_g
U28_g(x1, x2)  =  U28_g(x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2)
U14_aag(x1, x2, x3)  =  U14_aag(x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1)
U34_ag(x1, x2, x3)  =  U34_ag(x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x3)
U15_aag(x1, x2, x3)  =  U15_aag(x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2)
U18_aag(x1, x2, x3)  =  U18_aag(x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2)
U21_aag(x1, x2, x3)  =  U21_aag(x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x4)


Using Dependency Pairs [1,30] we result in the following initial DP problem:
Pi DP problem:
The TRS P consists of the following rules:

TIMES_IN_AAG(zero(R), S, zero(RS)) → U35_AAG(R, S, RS, times_in_aag(R, S, RS))
TIMES_IN_AAG(zero(R), S, zero(RS)) → TIMES_IN_AAG(R, S, RS)
TIMES_IN_AAG(one(R), S, RSS) → U36_AAG(R, S, RSS, times_in_aaa(R, S, RS))
TIMES_IN_AAG(one(R), S, RSS) → TIMES_IN_AAA(R, S, RS)
TIMES_IN_AAA(zero(R), S, zero(RS)) → U35_AAA(R, S, RS, times_in_aaa(R, S, RS))
TIMES_IN_AAA(zero(R), S, zero(RS)) → TIMES_IN_AAA(R, S, RS)
TIMES_IN_AAA(one(R), S, RSS) → U36_AAA(R, S, RSS, times_in_aaa(R, S, RS))
TIMES_IN_AAA(one(R), S, RSS) → TIMES_IN_AAA(R, S, RS)
U36_AAA(R, S, RSS, times_out_aaa(R, S, RS)) → U37_AAA(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
U36_AAA(R, S, RSS, times_out_aaa(R, S, RS)) → ADD_IN_AAA(S, zero(RS), RSS)
ADD_IN_AAA(X, b, X) → U1_AAA(X, binaryZ_in_a(X))
ADD_IN_AAA(X, b, X) → BINARYZ_IN_A(X)
BINARYZ_IN_A(zero(X)) → U29_A(X, binaryZ_in_a(X))
BINARYZ_IN_A(zero(X)) → BINARYZ_IN_A(X)
BINARYZ_IN_A(one(X)) → U30_A(X, binary_in_a(X))
BINARYZ_IN_A(one(X)) → BINARY_IN_A(X)
BINARY_IN_A(zero(X)) → U27_A(X, binaryZ_in_a(X))
BINARY_IN_A(zero(X)) → BINARYZ_IN_A(X)
BINARY_IN_A(one(X)) → U28_A(X, binary_in_a(X))
BINARY_IN_A(one(X)) → BINARY_IN_A(X)
ADD_IN_AAA(b, Y, Y) → U2_AAA(Y, binaryZ_in_a(Y))
ADD_IN_AAA(b, Y, Y) → BINARYZ_IN_A(Y)
ADD_IN_AAA(X, Y, Z) → U3_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADD_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(zero(X), zero(Y), zero(Z)) → U10_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADDZ_IN_AAA(zero(X), zero(Y), zero(Z)) → ADDZ_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(zero(X), one(Y), one(Z)) → U11_AAA(X, Y, Z, addx_in_aaa(X, Y, Z))
ADDZ_IN_AAA(zero(X), one(Y), one(Z)) → ADDX_IN_AAA(X, Y, Z)
ADDX_IN_AAA(one(X), b, one(X)) → U4_AAA(X, binary_in_a(X))
ADDX_IN_AAA(one(X), b, one(X)) → BINARY_IN_A(X)
ADDX_IN_AAA(zero(X), b, zero(X)) → U5_AAA(X, binaryZ_in_a(X))
ADDX_IN_AAA(zero(X), b, zero(X)) → BINARYZ_IN_A(X)
ADDX_IN_AAA(X, Y, Z) → U6_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADDX_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(one(X), zero(Y), one(Z)) → U12_AAA(X, Y, Z, addy_in_aaa(X, Y, Z))
ADDZ_IN_AAA(one(X), zero(Y), one(Z)) → ADDY_IN_AAA(X, Y, Z)
ADDY_IN_AAA(b, one(Y), one(Y)) → U7_AAA(Y, binary_in_a(Y))
ADDY_IN_AAA(b, one(Y), one(Y)) → BINARY_IN_A(Y)
ADDY_IN_AAA(b, zero(Y), zero(Y)) → U8_AAA(Y, binaryZ_in_a(Y))
ADDY_IN_AAA(b, zero(Y), zero(Y)) → BINARYZ_IN_A(Y)
ADDY_IN_AAA(X, Y, Z) → U9_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADDY_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(one(X), one(Y), zero(Z)) → U13_AAA(X, Y, Z, addc_in_aaa(X, Y, Z))
ADDZ_IN_AAA(one(X), one(Y), zero(Z)) → ADDC_IN_AAA(X, Y, Z)
ADDC_IN_AAA(X, b, Z) → U14_AAA(X, Z, succZ_in_aa(X, Z))
ADDC_IN_AAA(X, b, Z) → SUCCZ_IN_AA(X, Z)
SUCCZ_IN_AA(zero(X), one(X)) → U33_AA(X, binaryZ_in_a(X))
SUCCZ_IN_AA(zero(X), one(X)) → BINARYZ_IN_A(X)
SUCCZ_IN_AA(one(X), zero(Z)) → U34_AA(X, Z, succ_in_aa(X, Z))
SUCCZ_IN_AA(one(X), zero(Z)) → SUCC_IN_AA(X, Z)
SUCC_IN_AA(zero(X), one(X)) → U31_AA(X, binaryZ_in_a(X))
SUCC_IN_AA(zero(X), one(X)) → BINARYZ_IN_A(X)
SUCC_IN_AA(one(X), zero(Z)) → U32_AA(X, Z, succ_in_aa(X, Z))
SUCC_IN_AA(one(X), zero(Z)) → SUCC_IN_AA(X, Z)
ADDC_IN_AAA(b, Y, Z) → U15_AAA(Y, Z, succZ_in_aa(Y, Z))
ADDC_IN_AAA(b, Y, Z) → SUCCZ_IN_AA(Y, Z)
ADDC_IN_AAA(X, Y, Z) → U16_AAA(X, Y, Z, addC_in_aaa(X, Y, Z))
ADDC_IN_AAA(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(zero(X), zero(Y), one(Z)) → U23_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADDC_IN_AAA1(zero(X), zero(Y), one(Z)) → ADDZ_IN_AAA(X, Y, Z)
ADDC_IN_AAA1(zero(X), one(Y), zero(Z)) → U24_AAA(X, Y, Z, addX_in_aaa(X, Y, Z))
ADDC_IN_AAA1(zero(X), one(Y), zero(Z)) → ADDX_IN_AAA1(X, Y, Z)
ADDX_IN_AAA1(zero(X), b, one(X)) → U17_AAA(X, binaryZ_in_a(X))
ADDX_IN_AAA1(zero(X), b, one(X)) → BINARYZ_IN_A(X)
ADDX_IN_AAA1(one(X), b, zero(Z)) → U18_AAA(X, Z, succ_in_aa(X, Z))
ADDX_IN_AAA1(one(X), b, zero(Z)) → SUCC_IN_AA(X, Z)
ADDX_IN_AAA1(X, Y, Z) → U19_AAA(X, Y, Z, addC_in_aaa(X, Y, Z))
ADDX_IN_AAA1(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(one(X), zero(Y), zero(Z)) → U25_AAA(X, Y, Z, addY_in_aaa(X, Y, Z))
ADDC_IN_AAA1(one(X), zero(Y), zero(Z)) → ADDY_IN_AAA1(X, Y, Z)
ADDY_IN_AAA1(b, zero(Y), one(Y)) → U20_AAA(Y, binaryZ_in_a(Y))
ADDY_IN_AAA1(b, zero(Y), one(Y)) → BINARYZ_IN_A(Y)
ADDY_IN_AAA1(b, one(Y), zero(Z)) → U21_AAA(Y, Z, succ_in_aa(Y, Z))
ADDY_IN_AAA1(b, one(Y), zero(Z)) → SUCC_IN_AA(Y, Z)
ADDY_IN_AAA1(X, Y, Z) → U22_AAA(X, Y, Z, addC_in_aaa(X, Y, Z))
ADDY_IN_AAA1(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(one(X), one(Y), one(Z)) → U26_AAA(X, Y, Z, addc_in_aaa(X, Y, Z))
ADDC_IN_AAA1(one(X), one(Y), one(Z)) → ADDC_IN_AAA(X, Y, Z)
U36_AAG(R, S, RSS, times_out_aaa(R, S, RS)) → U37_AAG(R, S, RSS, add_in_aag(S, zero(RS), RSS))
U36_AAG(R, S, RSS, times_out_aaa(R, S, RS)) → ADD_IN_AAG(S, zero(RS), RSS)
ADD_IN_AAG(X, b, X) → U1_AAG(X, binaryZ_in_g(X))
ADD_IN_AAG(X, b, X) → BINARYZ_IN_G(X)
BINARYZ_IN_G(zero(X)) → U29_G(X, binaryZ_in_g(X))
BINARYZ_IN_G(zero(X)) → BINARYZ_IN_G(X)
BINARYZ_IN_G(one(X)) → U30_G(X, binary_in_g(X))
BINARYZ_IN_G(one(X)) → BINARY_IN_G(X)
BINARY_IN_G(zero(X)) → U27_G(X, binaryZ_in_g(X))
BINARY_IN_G(zero(X)) → BINARYZ_IN_G(X)
BINARY_IN_G(one(X)) → U28_G(X, binary_in_g(X))
BINARY_IN_G(one(X)) → BINARY_IN_G(X)
ADD_IN_AAG(b, Y, Y) → U2_AAG(Y, binaryZ_in_g(Y))
ADD_IN_AAG(b, Y, Y) → BINARYZ_IN_G(Y)
ADD_IN_AAG(X, Y, Z) → U3_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADD_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(zero(X), zero(Y), zero(Z)) → U10_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADDZ_IN_AAG(zero(X), zero(Y), zero(Z)) → ADDZ_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(zero(X), one(Y), one(Z)) → U11_AAG(X, Y, Z, addx_in_aag(X, Y, Z))
ADDZ_IN_AAG(zero(X), one(Y), one(Z)) → ADDX_IN_AAG(X, Y, Z)
ADDX_IN_AAG(one(X), b, one(X)) → U4_AAG(X, binary_in_g(X))
ADDX_IN_AAG(one(X), b, one(X)) → BINARY_IN_G(X)
ADDX_IN_AAG(zero(X), b, zero(X)) → U5_AAG(X, binaryZ_in_g(X))
ADDX_IN_AAG(zero(X), b, zero(X)) → BINARYZ_IN_G(X)
ADDX_IN_AAG(X, Y, Z) → U6_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADDX_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(one(X), zero(Y), one(Z)) → U12_AAG(X, Y, Z, addy_in_aag(X, Y, Z))
ADDZ_IN_AAG(one(X), zero(Y), one(Z)) → ADDY_IN_AAG(X, Y, Z)
ADDY_IN_AAG(b, one(Y), one(Y)) → U7_AAG(Y, binary_in_g(Y))
ADDY_IN_AAG(b, one(Y), one(Y)) → BINARY_IN_G(Y)
ADDY_IN_AAG(b, zero(Y), zero(Y)) → U8_AAG(Y, binaryZ_in_g(Y))
ADDY_IN_AAG(b, zero(Y), zero(Y)) → BINARYZ_IN_G(Y)
ADDY_IN_AAG(X, Y, Z) → U9_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADDY_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(one(X), one(Y), zero(Z)) → U13_AAG(X, Y, Z, addc_in_aag(X, Y, Z))
ADDZ_IN_AAG(one(X), one(Y), zero(Z)) → ADDC_IN_AAG(X, Y, Z)
ADDC_IN_AAG(X, b, Z) → U14_AAG(X, Z, succZ_in_ag(X, Z))
ADDC_IN_AAG(X, b, Z) → SUCCZ_IN_AG(X, Z)
SUCCZ_IN_AG(zero(X), one(X)) → U33_AG(X, binaryZ_in_g(X))
SUCCZ_IN_AG(zero(X), one(X)) → BINARYZ_IN_G(X)
SUCCZ_IN_AG(one(X), zero(Z)) → U34_AG(X, Z, succ_in_ag(X, Z))
SUCCZ_IN_AG(one(X), zero(Z)) → SUCC_IN_AG(X, Z)
SUCC_IN_AG(zero(X), one(X)) → U31_AG(X, binaryZ_in_g(X))
SUCC_IN_AG(zero(X), one(X)) → BINARYZ_IN_G(X)
SUCC_IN_AG(one(X), zero(Z)) → U32_AG(X, Z, succ_in_ag(X, Z))
SUCC_IN_AG(one(X), zero(Z)) → SUCC_IN_AG(X, Z)
ADDC_IN_AAG(b, Y, Z) → U15_AAG(Y, Z, succZ_in_ag(Y, Z))
ADDC_IN_AAG(b, Y, Z) → SUCCZ_IN_AG(Y, Z)
ADDC_IN_AAG(X, Y, Z) → U16_AAG(X, Y, Z, addC_in_aag(X, Y, Z))
ADDC_IN_AAG(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDC_IN_AAG1(zero(X), zero(Y), one(Z)) → U23_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADDC_IN_AAG1(zero(X), zero(Y), one(Z)) → ADDZ_IN_AAG(X, Y, Z)
ADDC_IN_AAG1(zero(X), one(Y), zero(Z)) → U24_AAG(X, Y, Z, addX_in_aag(X, Y, Z))
ADDC_IN_AAG1(zero(X), one(Y), zero(Z)) → ADDX_IN_AAG1(X, Y, Z)
ADDX_IN_AAG1(zero(X), b, one(X)) → U17_AAG(X, binaryZ_in_g(X))
ADDX_IN_AAG1(zero(X), b, one(X)) → BINARYZ_IN_G(X)
ADDX_IN_AAG1(one(X), b, zero(Z)) → U18_AAG(X, Z, succ_in_ag(X, Z))
ADDX_IN_AAG1(one(X), b, zero(Z)) → SUCC_IN_AG(X, Z)
ADDX_IN_AAG1(X, Y, Z) → U19_AAG(X, Y, Z, addC_in_aag(X, Y, Z))
ADDX_IN_AAG1(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDC_IN_AAG1(one(X), zero(Y), zero(Z)) → U25_AAG(X, Y, Z, addY_in_aag(X, Y, Z))
ADDC_IN_AAG1(one(X), zero(Y), zero(Z)) → ADDY_IN_AAG1(X, Y, Z)
ADDY_IN_AAG1(b, zero(Y), one(Y)) → U20_AAG(Y, binaryZ_in_g(Y))
ADDY_IN_AAG1(b, zero(Y), one(Y)) → BINARYZ_IN_G(Y)
ADDY_IN_AAG1(b, one(Y), zero(Z)) → U21_AAG(Y, Z, succ_in_ag(Y, Z))
ADDY_IN_AAG1(b, one(Y), zero(Z)) → SUCC_IN_AG(Y, Z)
ADDY_IN_AAG1(X, Y, Z) → U22_AAG(X, Y, Z, addC_in_aag(X, Y, Z))
ADDY_IN_AAG1(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDC_IN_AAG1(one(X), one(Y), one(Z)) → U26_AAG(X, Y, Z, addc_in_aag(X, Y, Z))
ADDC_IN_AAG1(one(X), one(Y), one(Z)) → ADDC_IN_AAG(X, Y, Z)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g
U27_g(x1, x2)  =  U27_g(x2)
binaryZ_out_g(x1)  =  binaryZ_out_g
U28_g(x1, x2)  =  U28_g(x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2)
U14_aag(x1, x2, x3)  =  U14_aag(x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1)
U34_ag(x1, x2, x3)  =  U34_ag(x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x3)
U15_aag(x1, x2, x3)  =  U15_aag(x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2)
U18_aag(x1, x2, x3)  =  U18_aag(x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2)
U21_aag(x1, x2, x3)  =  U21_aag(x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x4)
U5_AAG(x1, x2)  =  U5_AAG(x1, x2)
U18_AAG(x1, x2, x3)  =  U18_AAG(x3)
U28_A(x1, x2)  =  U28_A(x2)
U9_AAG(x1, x2, x3, x4)  =  U9_AAG(x4)
U20_AAG(x1, x2)  =  U20_AAG(x1, x2)
U22_AAA(x1, x2, x3, x4)  =  U22_AAA(x4)
U13_AAG(x1, x2, x3, x4)  =  U13_AAG(x4)
SUCC_IN_AA(x1, x2)  =  SUCC_IN_AA
U30_G(x1, x2)  =  U30_G(x2)
U31_AA(x1, x2)  =  U31_AA(x2)
U3_AAA(x1, x2, x3, x4)  =  U3_AAA(x4)
U20_AAA(x1, x2)  =  U20_AAA(x2)
U37_AAA(x1, x2, x3, x4)  =  U37_AAA(x1, x4)
U15_AAG(x1, x2, x3)  =  U15_AAG(x3)
ADDY_IN_AAA(x1, x2, x3)  =  ADDY_IN_AAA
U19_AAG(x1, x2, x3, x4)  =  U19_AAG(x4)
U11_AAG(x1, x2, x3, x4)  =  U11_AAG(x4)
BINARYZ_IN_G(x1)  =  BINARYZ_IN_G(x1)
U15_AAA(x1, x2, x3)  =  U15_AAA(x3)
SUCC_IN_AG(x1, x2)  =  SUCC_IN_AG(x2)
U21_AAA(x1, x2, x3)  =  U21_AAA(x3)
U14_AAG(x1, x2, x3)  =  U14_AAG(x3)
BINARY_IN_A(x1)  =  BINARY_IN_A
U23_AAA(x1, x2, x3, x4)  =  U23_AAA(x4)
U8_AAA(x1, x2)  =  U8_AAA(x2)
TIMES_IN_AAG(x1, x2, x3)  =  TIMES_IN_AAG(x3)
ADDC_IN_AAG(x1, x2, x3)  =  ADDC_IN_AAG(x3)
U17_AAA(x1, x2)  =  U17_AAA(x2)
ADDX_IN_AAG(x1, x2, x3)  =  ADDX_IN_AAG(x3)
U26_AAA(x1, x2, x3, x4)  =  U26_AAA(x4)
TIMES_IN_AAA(x1, x2, x3)  =  TIMES_IN_AAA
U11_AAA(x1, x2, x3, x4)  =  U11_AAA(x4)
SUCCZ_IN_AA(x1, x2)  =  SUCCZ_IN_AA
U27_A(x1, x2)  =  U27_A(x2)
U22_AAG(x1, x2, x3, x4)  =  U22_AAG(x4)
BINARYZ_IN_A(x1)  =  BINARYZ_IN_A
U2_AAG(x1, x2)  =  U2_AAG(x1, x2)
ADDC_IN_AAA(x1, x2, x3)  =  ADDC_IN_AAA
U35_AAA(x1, x2, x3, x4)  =  U35_AAA(x4)
U26_AAG(x1, x2, x3, x4)  =  U26_AAG(x4)
U9_AAA(x1, x2, x3, x4)  =  U9_AAA(x4)
U34_AG(x1, x2, x3)  =  U34_AG(x3)
U4_AAA(x1, x2)  =  U4_AAA(x2)
U12_AAG(x1, x2, x3, x4)  =  U12_AAG(x4)
U24_AAG(x1, x2, x3, x4)  =  U24_AAG(x4)
U25_AAA(x1, x2, x3, x4)  =  U25_AAA(x4)
U14_AAA(x1, x2, x3)  =  U14_AAA(x3)
U6_AAG(x1, x2, x3, x4)  =  U6_AAG(x4)
ADDY_IN_AAG(x1, x2, x3)  =  ADDY_IN_AAG(x3)
U24_AAA(x1, x2, x3, x4)  =  U24_AAA(x4)
ADDX_IN_AAA(x1, x2, x3)  =  ADDX_IN_AAA
U2_AAA(x1, x2)  =  U2_AAA(x2)
U29_G(x1, x2)  =  U29_G(x2)
U4_AAG(x1, x2)  =  U4_AAG(x1, x2)
U31_AG(x1, x2)  =  U31_AG(x1, x2)
U27_G(x1, x2)  =  U27_G(x2)
ADDZ_IN_AAG(x1, x2, x3)  =  ADDZ_IN_AAG(x3)
U32_AA(x1, x2, x3)  =  U32_AA(x3)
ADD_IN_AAG(x1, x2, x3)  =  ADD_IN_AAG(x3)
U36_AAG(x1, x2, x3, x4)  =  U36_AAG(x3, x4)
U28_G(x1, x2)  =  U28_G(x2)
ADD_IN_AAA(x1, x2, x3)  =  ADD_IN_AAA
SUCCZ_IN_AG(x1, x2)  =  SUCCZ_IN_AG(x2)
U16_AAA(x1, x2, x3, x4)  =  U16_AAA(x4)
U17_AAG(x1, x2)  =  U17_AAG(x1, x2)
U1_AAA(x1, x2)  =  U1_AAA(x2)
U1_AAG(x1, x2)  =  U1_AAG(x1, x2)
ADDY_IN_AAA1(x1, x2, x3)  =  ADDY_IN_AAA1
ADDY_IN_AAG1(x1, x2, x3)  =  ADDY_IN_AAG1(x3)
U5_AAA(x1, x2)  =  U5_AAA(x2)
BINARY_IN_G(x1)  =  BINARY_IN_G(x1)
U3_AAG(x1, x2, x3, x4)  =  U3_AAG(x4)
U13_AAA(x1, x2, x3, x4)  =  U13_AAA(x4)
U7_AAG(x1, x2)  =  U7_AAG(x1, x2)
U7_AAA(x1, x2)  =  U7_AAA(x2)
U12_AAA(x1, x2, x3, x4)  =  U12_AAA(x4)
U16_AAG(x1, x2, x3, x4)  =  U16_AAG(x4)
U21_AAG(x1, x2, x3)  =  U21_AAG(x3)
U34_AA(x1, x2, x3)  =  U34_AA(x3)
U37_AAG(x1, x2, x3, x4)  =  U37_AAG(x1, x4)
U8_AAG(x1, x2)  =  U8_AAG(x1, x2)
U35_AAG(x1, x2, x3, x4)  =  U35_AAG(x4)
ADDZ_IN_AAA(x1, x2, x3)  =  ADDZ_IN_AAA
U23_AAG(x1, x2, x3, x4)  =  U23_AAG(x4)
U25_AAG(x1, x2, x3, x4)  =  U25_AAG(x4)
U10_AAA(x1, x2, x3, x4)  =  U10_AAA(x4)
ADDC_IN_AAG1(x1, x2, x3)  =  ADDC_IN_AAG1(x3)
ADDC_IN_AAA1(x1, x2, x3)  =  ADDC_IN_AAA1
U6_AAA(x1, x2, x3, x4)  =  U6_AAA(x4)
ADDX_IN_AAG1(x1, x2, x3)  =  ADDX_IN_AAG1(x3)
U18_AAA(x1, x2, x3)  =  U18_AAA(x3)
U30_A(x1, x2)  =  U30_A(x2)
U36_AAA(x1, x2, x3, x4)  =  U36_AAA(x4)
U19_AAA(x1, x2, x3, x4)  =  U19_AAA(x4)
U10_AAG(x1, x2, x3, x4)  =  U10_AAG(x4)
U33_AA(x1, x2)  =  U33_AA(x2)
U32_AG(x1, x2, x3)  =  U32_AG(x3)
ADDX_IN_AAA1(x1, x2, x3)  =  ADDX_IN_AAA1
U29_A(x1, x2)  =  U29_A(x2)
U33_AG(x1, x2)  =  U33_AG(x1, x2)

We have to consider all (P,R,Pi)-chains

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
PiDP
          ↳ DependencyGraphProof
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

TIMES_IN_AAG(zero(R), S, zero(RS)) → U35_AAG(R, S, RS, times_in_aag(R, S, RS))
TIMES_IN_AAG(zero(R), S, zero(RS)) → TIMES_IN_AAG(R, S, RS)
TIMES_IN_AAG(one(R), S, RSS) → U36_AAG(R, S, RSS, times_in_aaa(R, S, RS))
TIMES_IN_AAG(one(R), S, RSS) → TIMES_IN_AAA(R, S, RS)
TIMES_IN_AAA(zero(R), S, zero(RS)) → U35_AAA(R, S, RS, times_in_aaa(R, S, RS))
TIMES_IN_AAA(zero(R), S, zero(RS)) → TIMES_IN_AAA(R, S, RS)
TIMES_IN_AAA(one(R), S, RSS) → U36_AAA(R, S, RSS, times_in_aaa(R, S, RS))
TIMES_IN_AAA(one(R), S, RSS) → TIMES_IN_AAA(R, S, RS)
U36_AAA(R, S, RSS, times_out_aaa(R, S, RS)) → U37_AAA(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
U36_AAA(R, S, RSS, times_out_aaa(R, S, RS)) → ADD_IN_AAA(S, zero(RS), RSS)
ADD_IN_AAA(X, b, X) → U1_AAA(X, binaryZ_in_a(X))
ADD_IN_AAA(X, b, X) → BINARYZ_IN_A(X)
BINARYZ_IN_A(zero(X)) → U29_A(X, binaryZ_in_a(X))
BINARYZ_IN_A(zero(X)) → BINARYZ_IN_A(X)
BINARYZ_IN_A(one(X)) → U30_A(X, binary_in_a(X))
BINARYZ_IN_A(one(X)) → BINARY_IN_A(X)
BINARY_IN_A(zero(X)) → U27_A(X, binaryZ_in_a(X))
BINARY_IN_A(zero(X)) → BINARYZ_IN_A(X)
BINARY_IN_A(one(X)) → U28_A(X, binary_in_a(X))
BINARY_IN_A(one(X)) → BINARY_IN_A(X)
ADD_IN_AAA(b, Y, Y) → U2_AAA(Y, binaryZ_in_a(Y))
ADD_IN_AAA(b, Y, Y) → BINARYZ_IN_A(Y)
ADD_IN_AAA(X, Y, Z) → U3_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADD_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(zero(X), zero(Y), zero(Z)) → U10_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADDZ_IN_AAA(zero(X), zero(Y), zero(Z)) → ADDZ_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(zero(X), one(Y), one(Z)) → U11_AAA(X, Y, Z, addx_in_aaa(X, Y, Z))
ADDZ_IN_AAA(zero(X), one(Y), one(Z)) → ADDX_IN_AAA(X, Y, Z)
ADDX_IN_AAA(one(X), b, one(X)) → U4_AAA(X, binary_in_a(X))
ADDX_IN_AAA(one(X), b, one(X)) → BINARY_IN_A(X)
ADDX_IN_AAA(zero(X), b, zero(X)) → U5_AAA(X, binaryZ_in_a(X))
ADDX_IN_AAA(zero(X), b, zero(X)) → BINARYZ_IN_A(X)
ADDX_IN_AAA(X, Y, Z) → U6_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADDX_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(one(X), zero(Y), one(Z)) → U12_AAA(X, Y, Z, addy_in_aaa(X, Y, Z))
ADDZ_IN_AAA(one(X), zero(Y), one(Z)) → ADDY_IN_AAA(X, Y, Z)
ADDY_IN_AAA(b, one(Y), one(Y)) → U7_AAA(Y, binary_in_a(Y))
ADDY_IN_AAA(b, one(Y), one(Y)) → BINARY_IN_A(Y)
ADDY_IN_AAA(b, zero(Y), zero(Y)) → U8_AAA(Y, binaryZ_in_a(Y))
ADDY_IN_AAA(b, zero(Y), zero(Y)) → BINARYZ_IN_A(Y)
ADDY_IN_AAA(X, Y, Z) → U9_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADDY_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(one(X), one(Y), zero(Z)) → U13_AAA(X, Y, Z, addc_in_aaa(X, Y, Z))
ADDZ_IN_AAA(one(X), one(Y), zero(Z)) → ADDC_IN_AAA(X, Y, Z)
ADDC_IN_AAA(X, b, Z) → U14_AAA(X, Z, succZ_in_aa(X, Z))
ADDC_IN_AAA(X, b, Z) → SUCCZ_IN_AA(X, Z)
SUCCZ_IN_AA(zero(X), one(X)) → U33_AA(X, binaryZ_in_a(X))
SUCCZ_IN_AA(zero(X), one(X)) → BINARYZ_IN_A(X)
SUCCZ_IN_AA(one(X), zero(Z)) → U34_AA(X, Z, succ_in_aa(X, Z))
SUCCZ_IN_AA(one(X), zero(Z)) → SUCC_IN_AA(X, Z)
SUCC_IN_AA(zero(X), one(X)) → U31_AA(X, binaryZ_in_a(X))
SUCC_IN_AA(zero(X), one(X)) → BINARYZ_IN_A(X)
SUCC_IN_AA(one(X), zero(Z)) → U32_AA(X, Z, succ_in_aa(X, Z))
SUCC_IN_AA(one(X), zero(Z)) → SUCC_IN_AA(X, Z)
ADDC_IN_AAA(b, Y, Z) → U15_AAA(Y, Z, succZ_in_aa(Y, Z))
ADDC_IN_AAA(b, Y, Z) → SUCCZ_IN_AA(Y, Z)
ADDC_IN_AAA(X, Y, Z) → U16_AAA(X, Y, Z, addC_in_aaa(X, Y, Z))
ADDC_IN_AAA(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(zero(X), zero(Y), one(Z)) → U23_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADDC_IN_AAA1(zero(X), zero(Y), one(Z)) → ADDZ_IN_AAA(X, Y, Z)
ADDC_IN_AAA1(zero(X), one(Y), zero(Z)) → U24_AAA(X, Y, Z, addX_in_aaa(X, Y, Z))
ADDC_IN_AAA1(zero(X), one(Y), zero(Z)) → ADDX_IN_AAA1(X, Y, Z)
ADDX_IN_AAA1(zero(X), b, one(X)) → U17_AAA(X, binaryZ_in_a(X))
ADDX_IN_AAA1(zero(X), b, one(X)) → BINARYZ_IN_A(X)
ADDX_IN_AAA1(one(X), b, zero(Z)) → U18_AAA(X, Z, succ_in_aa(X, Z))
ADDX_IN_AAA1(one(X), b, zero(Z)) → SUCC_IN_AA(X, Z)
ADDX_IN_AAA1(X, Y, Z) → U19_AAA(X, Y, Z, addC_in_aaa(X, Y, Z))
ADDX_IN_AAA1(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(one(X), zero(Y), zero(Z)) → U25_AAA(X, Y, Z, addY_in_aaa(X, Y, Z))
ADDC_IN_AAA1(one(X), zero(Y), zero(Z)) → ADDY_IN_AAA1(X, Y, Z)
ADDY_IN_AAA1(b, zero(Y), one(Y)) → U20_AAA(Y, binaryZ_in_a(Y))
ADDY_IN_AAA1(b, zero(Y), one(Y)) → BINARYZ_IN_A(Y)
ADDY_IN_AAA1(b, one(Y), zero(Z)) → U21_AAA(Y, Z, succ_in_aa(Y, Z))
ADDY_IN_AAA1(b, one(Y), zero(Z)) → SUCC_IN_AA(Y, Z)
ADDY_IN_AAA1(X, Y, Z) → U22_AAA(X, Y, Z, addC_in_aaa(X, Y, Z))
ADDY_IN_AAA1(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(one(X), one(Y), one(Z)) → U26_AAA(X, Y, Z, addc_in_aaa(X, Y, Z))
ADDC_IN_AAA1(one(X), one(Y), one(Z)) → ADDC_IN_AAA(X, Y, Z)
U36_AAG(R, S, RSS, times_out_aaa(R, S, RS)) → U37_AAG(R, S, RSS, add_in_aag(S, zero(RS), RSS))
U36_AAG(R, S, RSS, times_out_aaa(R, S, RS)) → ADD_IN_AAG(S, zero(RS), RSS)
ADD_IN_AAG(X, b, X) → U1_AAG(X, binaryZ_in_g(X))
ADD_IN_AAG(X, b, X) → BINARYZ_IN_G(X)
BINARYZ_IN_G(zero(X)) → U29_G(X, binaryZ_in_g(X))
BINARYZ_IN_G(zero(X)) → BINARYZ_IN_G(X)
BINARYZ_IN_G(one(X)) → U30_G(X, binary_in_g(X))
BINARYZ_IN_G(one(X)) → BINARY_IN_G(X)
BINARY_IN_G(zero(X)) → U27_G(X, binaryZ_in_g(X))
BINARY_IN_G(zero(X)) → BINARYZ_IN_G(X)
BINARY_IN_G(one(X)) → U28_G(X, binary_in_g(X))
BINARY_IN_G(one(X)) → BINARY_IN_G(X)
ADD_IN_AAG(b, Y, Y) → U2_AAG(Y, binaryZ_in_g(Y))
ADD_IN_AAG(b, Y, Y) → BINARYZ_IN_G(Y)
ADD_IN_AAG(X, Y, Z) → U3_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADD_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(zero(X), zero(Y), zero(Z)) → U10_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADDZ_IN_AAG(zero(X), zero(Y), zero(Z)) → ADDZ_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(zero(X), one(Y), one(Z)) → U11_AAG(X, Y, Z, addx_in_aag(X, Y, Z))
ADDZ_IN_AAG(zero(X), one(Y), one(Z)) → ADDX_IN_AAG(X, Y, Z)
ADDX_IN_AAG(one(X), b, one(X)) → U4_AAG(X, binary_in_g(X))
ADDX_IN_AAG(one(X), b, one(X)) → BINARY_IN_G(X)
ADDX_IN_AAG(zero(X), b, zero(X)) → U5_AAG(X, binaryZ_in_g(X))
ADDX_IN_AAG(zero(X), b, zero(X)) → BINARYZ_IN_G(X)
ADDX_IN_AAG(X, Y, Z) → U6_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADDX_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(one(X), zero(Y), one(Z)) → U12_AAG(X, Y, Z, addy_in_aag(X, Y, Z))
ADDZ_IN_AAG(one(X), zero(Y), one(Z)) → ADDY_IN_AAG(X, Y, Z)
ADDY_IN_AAG(b, one(Y), one(Y)) → U7_AAG(Y, binary_in_g(Y))
ADDY_IN_AAG(b, one(Y), one(Y)) → BINARY_IN_G(Y)
ADDY_IN_AAG(b, zero(Y), zero(Y)) → U8_AAG(Y, binaryZ_in_g(Y))
ADDY_IN_AAG(b, zero(Y), zero(Y)) → BINARYZ_IN_G(Y)
ADDY_IN_AAG(X, Y, Z) → U9_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADDY_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(one(X), one(Y), zero(Z)) → U13_AAG(X, Y, Z, addc_in_aag(X, Y, Z))
ADDZ_IN_AAG(one(X), one(Y), zero(Z)) → ADDC_IN_AAG(X, Y, Z)
ADDC_IN_AAG(X, b, Z) → U14_AAG(X, Z, succZ_in_ag(X, Z))
ADDC_IN_AAG(X, b, Z) → SUCCZ_IN_AG(X, Z)
SUCCZ_IN_AG(zero(X), one(X)) → U33_AG(X, binaryZ_in_g(X))
SUCCZ_IN_AG(zero(X), one(X)) → BINARYZ_IN_G(X)
SUCCZ_IN_AG(one(X), zero(Z)) → U34_AG(X, Z, succ_in_ag(X, Z))
SUCCZ_IN_AG(one(X), zero(Z)) → SUCC_IN_AG(X, Z)
SUCC_IN_AG(zero(X), one(X)) → U31_AG(X, binaryZ_in_g(X))
SUCC_IN_AG(zero(X), one(X)) → BINARYZ_IN_G(X)
SUCC_IN_AG(one(X), zero(Z)) → U32_AG(X, Z, succ_in_ag(X, Z))
SUCC_IN_AG(one(X), zero(Z)) → SUCC_IN_AG(X, Z)
ADDC_IN_AAG(b, Y, Z) → U15_AAG(Y, Z, succZ_in_ag(Y, Z))
ADDC_IN_AAG(b, Y, Z) → SUCCZ_IN_AG(Y, Z)
ADDC_IN_AAG(X, Y, Z) → U16_AAG(X, Y, Z, addC_in_aag(X, Y, Z))
ADDC_IN_AAG(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDC_IN_AAG1(zero(X), zero(Y), one(Z)) → U23_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADDC_IN_AAG1(zero(X), zero(Y), one(Z)) → ADDZ_IN_AAG(X, Y, Z)
ADDC_IN_AAG1(zero(X), one(Y), zero(Z)) → U24_AAG(X, Y, Z, addX_in_aag(X, Y, Z))
ADDC_IN_AAG1(zero(X), one(Y), zero(Z)) → ADDX_IN_AAG1(X, Y, Z)
ADDX_IN_AAG1(zero(X), b, one(X)) → U17_AAG(X, binaryZ_in_g(X))
ADDX_IN_AAG1(zero(X), b, one(X)) → BINARYZ_IN_G(X)
ADDX_IN_AAG1(one(X), b, zero(Z)) → U18_AAG(X, Z, succ_in_ag(X, Z))
ADDX_IN_AAG1(one(X), b, zero(Z)) → SUCC_IN_AG(X, Z)
ADDX_IN_AAG1(X, Y, Z) → U19_AAG(X, Y, Z, addC_in_aag(X, Y, Z))
ADDX_IN_AAG1(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDC_IN_AAG1(one(X), zero(Y), zero(Z)) → U25_AAG(X, Y, Z, addY_in_aag(X, Y, Z))
ADDC_IN_AAG1(one(X), zero(Y), zero(Z)) → ADDY_IN_AAG1(X, Y, Z)
ADDY_IN_AAG1(b, zero(Y), one(Y)) → U20_AAG(Y, binaryZ_in_g(Y))
ADDY_IN_AAG1(b, zero(Y), one(Y)) → BINARYZ_IN_G(Y)
ADDY_IN_AAG1(b, one(Y), zero(Z)) → U21_AAG(Y, Z, succ_in_ag(Y, Z))
ADDY_IN_AAG1(b, one(Y), zero(Z)) → SUCC_IN_AG(Y, Z)
ADDY_IN_AAG1(X, Y, Z) → U22_AAG(X, Y, Z, addC_in_aag(X, Y, Z))
ADDY_IN_AAG1(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDC_IN_AAG1(one(X), one(Y), one(Z)) → U26_AAG(X, Y, Z, addc_in_aag(X, Y, Z))
ADDC_IN_AAG1(one(X), one(Y), one(Z)) → ADDC_IN_AAG(X, Y, Z)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g
U27_g(x1, x2)  =  U27_g(x2)
binaryZ_out_g(x1)  =  binaryZ_out_g
U28_g(x1, x2)  =  U28_g(x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2)
U14_aag(x1, x2, x3)  =  U14_aag(x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1)
U34_ag(x1, x2, x3)  =  U34_ag(x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x3)
U15_aag(x1, x2, x3)  =  U15_aag(x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2)
U18_aag(x1, x2, x3)  =  U18_aag(x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2)
U21_aag(x1, x2, x3)  =  U21_aag(x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x4)
U5_AAG(x1, x2)  =  U5_AAG(x1, x2)
U18_AAG(x1, x2, x3)  =  U18_AAG(x3)
U28_A(x1, x2)  =  U28_A(x2)
U9_AAG(x1, x2, x3, x4)  =  U9_AAG(x4)
U20_AAG(x1, x2)  =  U20_AAG(x1, x2)
U22_AAA(x1, x2, x3, x4)  =  U22_AAA(x4)
U13_AAG(x1, x2, x3, x4)  =  U13_AAG(x4)
SUCC_IN_AA(x1, x2)  =  SUCC_IN_AA
U30_G(x1, x2)  =  U30_G(x2)
U31_AA(x1, x2)  =  U31_AA(x2)
U3_AAA(x1, x2, x3, x4)  =  U3_AAA(x4)
U20_AAA(x1, x2)  =  U20_AAA(x2)
U37_AAA(x1, x2, x3, x4)  =  U37_AAA(x1, x4)
U15_AAG(x1, x2, x3)  =  U15_AAG(x3)
ADDY_IN_AAA(x1, x2, x3)  =  ADDY_IN_AAA
U19_AAG(x1, x2, x3, x4)  =  U19_AAG(x4)
U11_AAG(x1, x2, x3, x4)  =  U11_AAG(x4)
BINARYZ_IN_G(x1)  =  BINARYZ_IN_G(x1)
U15_AAA(x1, x2, x3)  =  U15_AAA(x3)
SUCC_IN_AG(x1, x2)  =  SUCC_IN_AG(x2)
U21_AAA(x1, x2, x3)  =  U21_AAA(x3)
U14_AAG(x1, x2, x3)  =  U14_AAG(x3)
BINARY_IN_A(x1)  =  BINARY_IN_A
U23_AAA(x1, x2, x3, x4)  =  U23_AAA(x4)
U8_AAA(x1, x2)  =  U8_AAA(x2)
TIMES_IN_AAG(x1, x2, x3)  =  TIMES_IN_AAG(x3)
ADDC_IN_AAG(x1, x2, x3)  =  ADDC_IN_AAG(x3)
U17_AAA(x1, x2)  =  U17_AAA(x2)
ADDX_IN_AAG(x1, x2, x3)  =  ADDX_IN_AAG(x3)
U26_AAA(x1, x2, x3, x4)  =  U26_AAA(x4)
TIMES_IN_AAA(x1, x2, x3)  =  TIMES_IN_AAA
U11_AAA(x1, x2, x3, x4)  =  U11_AAA(x4)
SUCCZ_IN_AA(x1, x2)  =  SUCCZ_IN_AA
U27_A(x1, x2)  =  U27_A(x2)
U22_AAG(x1, x2, x3, x4)  =  U22_AAG(x4)
BINARYZ_IN_A(x1)  =  BINARYZ_IN_A
U2_AAG(x1, x2)  =  U2_AAG(x1, x2)
ADDC_IN_AAA(x1, x2, x3)  =  ADDC_IN_AAA
U35_AAA(x1, x2, x3, x4)  =  U35_AAA(x4)
U26_AAG(x1, x2, x3, x4)  =  U26_AAG(x4)
U9_AAA(x1, x2, x3, x4)  =  U9_AAA(x4)
U34_AG(x1, x2, x3)  =  U34_AG(x3)
U4_AAA(x1, x2)  =  U4_AAA(x2)
U12_AAG(x1, x2, x3, x4)  =  U12_AAG(x4)
U24_AAG(x1, x2, x3, x4)  =  U24_AAG(x4)
U25_AAA(x1, x2, x3, x4)  =  U25_AAA(x4)
U14_AAA(x1, x2, x3)  =  U14_AAA(x3)
U6_AAG(x1, x2, x3, x4)  =  U6_AAG(x4)
ADDY_IN_AAG(x1, x2, x3)  =  ADDY_IN_AAG(x3)
U24_AAA(x1, x2, x3, x4)  =  U24_AAA(x4)
ADDX_IN_AAA(x1, x2, x3)  =  ADDX_IN_AAA
U2_AAA(x1, x2)  =  U2_AAA(x2)
U29_G(x1, x2)  =  U29_G(x2)
U4_AAG(x1, x2)  =  U4_AAG(x1, x2)
U31_AG(x1, x2)  =  U31_AG(x1, x2)
U27_G(x1, x2)  =  U27_G(x2)
ADDZ_IN_AAG(x1, x2, x3)  =  ADDZ_IN_AAG(x3)
U32_AA(x1, x2, x3)  =  U32_AA(x3)
ADD_IN_AAG(x1, x2, x3)  =  ADD_IN_AAG(x3)
U36_AAG(x1, x2, x3, x4)  =  U36_AAG(x3, x4)
U28_G(x1, x2)  =  U28_G(x2)
ADD_IN_AAA(x1, x2, x3)  =  ADD_IN_AAA
SUCCZ_IN_AG(x1, x2)  =  SUCCZ_IN_AG(x2)
U16_AAA(x1, x2, x3, x4)  =  U16_AAA(x4)
U17_AAG(x1, x2)  =  U17_AAG(x1, x2)
U1_AAA(x1, x2)  =  U1_AAA(x2)
U1_AAG(x1, x2)  =  U1_AAG(x1, x2)
ADDY_IN_AAA1(x1, x2, x3)  =  ADDY_IN_AAA1
ADDY_IN_AAG1(x1, x2, x3)  =  ADDY_IN_AAG1(x3)
U5_AAA(x1, x2)  =  U5_AAA(x2)
BINARY_IN_G(x1)  =  BINARY_IN_G(x1)
U3_AAG(x1, x2, x3, x4)  =  U3_AAG(x4)
U13_AAA(x1, x2, x3, x4)  =  U13_AAA(x4)
U7_AAG(x1, x2)  =  U7_AAG(x1, x2)
U7_AAA(x1, x2)  =  U7_AAA(x2)
U12_AAA(x1, x2, x3, x4)  =  U12_AAA(x4)
U16_AAG(x1, x2, x3, x4)  =  U16_AAG(x4)
U21_AAG(x1, x2, x3)  =  U21_AAG(x3)
U34_AA(x1, x2, x3)  =  U34_AA(x3)
U37_AAG(x1, x2, x3, x4)  =  U37_AAG(x1, x4)
U8_AAG(x1, x2)  =  U8_AAG(x1, x2)
U35_AAG(x1, x2, x3, x4)  =  U35_AAG(x4)
ADDZ_IN_AAA(x1, x2, x3)  =  ADDZ_IN_AAA
U23_AAG(x1, x2, x3, x4)  =  U23_AAG(x4)
U25_AAG(x1, x2, x3, x4)  =  U25_AAG(x4)
U10_AAA(x1, x2, x3, x4)  =  U10_AAA(x4)
ADDC_IN_AAG1(x1, x2, x3)  =  ADDC_IN_AAG1(x3)
ADDC_IN_AAA1(x1, x2, x3)  =  ADDC_IN_AAA1
U6_AAA(x1, x2, x3, x4)  =  U6_AAA(x4)
ADDX_IN_AAG1(x1, x2, x3)  =  ADDX_IN_AAG1(x3)
U18_AAA(x1, x2, x3)  =  U18_AAA(x3)
U30_A(x1, x2)  =  U30_A(x2)
U36_AAA(x1, x2, x3, x4)  =  U36_AAA(x4)
U19_AAA(x1, x2, x3, x4)  =  U19_AAA(x4)
U10_AAG(x1, x2, x3, x4)  =  U10_AAG(x4)
U33_AA(x1, x2)  =  U33_AA(x2)
U32_AG(x1, x2, x3)  =  U32_AG(x3)
ADDX_IN_AAA1(x1, x2, x3)  =  ADDX_IN_AAA1
U29_A(x1, x2)  =  U29_A(x2)
U33_AG(x1, x2)  =  U33_AG(x1, x2)

We have to consider all (P,R,Pi)-chains
The approximation of the Dependency Graph [30] contains 8 SCCs with 109 less nodes.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
PiDP
                ↳ UsableRulesProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

BINARY_IN_G(one(X)) → BINARY_IN_G(X)
BINARYZ_IN_G(one(X)) → BINARY_IN_G(X)
BINARY_IN_G(zero(X)) → BINARYZ_IN_G(X)
BINARYZ_IN_G(zero(X)) → BINARYZ_IN_G(X)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g
U27_g(x1, x2)  =  U27_g(x2)
binaryZ_out_g(x1)  =  binaryZ_out_g
U28_g(x1, x2)  =  U28_g(x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2)
U14_aag(x1, x2, x3)  =  U14_aag(x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1)
U34_ag(x1, x2, x3)  =  U34_ag(x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x3)
U15_aag(x1, x2, x3)  =  U15_aag(x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2)
U18_aag(x1, x2, x3)  =  U18_aag(x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2)
U21_aag(x1, x2, x3)  =  U21_aag(x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x4)
BINARYZ_IN_G(x1)  =  BINARYZ_IN_G(x1)
BINARY_IN_G(x1)  =  BINARY_IN_G(x1)

We have to consider all (P,R,Pi)-chains
For (infinitary) constructor rewriting [30] we can delete all non-usable rules from R.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
                ↳ UsableRulesProof
PiDP
                    ↳ PiDPToQDPProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

BINARY_IN_G(one(X)) → BINARY_IN_G(X)
BINARYZ_IN_G(one(X)) → BINARY_IN_G(X)
BINARY_IN_G(zero(X)) → BINARYZ_IN_G(X)
BINARYZ_IN_G(zero(X)) → BINARYZ_IN_G(X)

R is empty.
Pi is empty.
We have to consider all (P,R,Pi)-chains
Transforming (infinitary) constructor rewriting Pi-DP problem [30] into ordinary QDP problem [15] by application of Pi.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
                ↳ UsableRulesProof
                  ↳ PiDP
                    ↳ PiDPToQDPProof
QDP
                        ↳ QDPSizeChangeProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Q DP problem:
The TRS P consists of the following rules:

BINARY_IN_G(one(X)) → BINARY_IN_G(X)
BINARYZ_IN_G(one(X)) → BINARY_IN_G(X)
BINARY_IN_G(zero(X)) → BINARYZ_IN_G(X)
BINARYZ_IN_G(zero(X)) → BINARYZ_IN_G(X)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
PiDP
                ↳ UsableRulesProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

SUCC_IN_AG(one(X), zero(Z)) → SUCC_IN_AG(X, Z)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g
U27_g(x1, x2)  =  U27_g(x2)
binaryZ_out_g(x1)  =  binaryZ_out_g
U28_g(x1, x2)  =  U28_g(x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2)
U14_aag(x1, x2, x3)  =  U14_aag(x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1)
U34_ag(x1, x2, x3)  =  U34_ag(x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x3)
U15_aag(x1, x2, x3)  =  U15_aag(x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2)
U18_aag(x1, x2, x3)  =  U18_aag(x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2)
U21_aag(x1, x2, x3)  =  U21_aag(x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x4)
SUCC_IN_AG(x1, x2)  =  SUCC_IN_AG(x2)

We have to consider all (P,R,Pi)-chains
For (infinitary) constructor rewriting [30] we can delete all non-usable rules from R.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
PiDP
                    ↳ PiDPToQDPProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

SUCC_IN_AG(one(X), zero(Z)) → SUCC_IN_AG(X, Z)

R is empty.
The argument filtering Pi contains the following mapping:
zero(x1)  =  zero(x1)
one(x1)  =  one(x1)
SUCC_IN_AG(x1, x2)  =  SUCC_IN_AG(x2)

We have to consider all (P,R,Pi)-chains
Transforming (infinitary) constructor rewriting Pi-DP problem [30] into ordinary QDP problem [15] by application of Pi.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
                  ↳ PiDP
                    ↳ PiDPToQDPProof
QDP
                        ↳ QDPSizeChangeProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Q DP problem:
The TRS P consists of the following rules:

SUCC_IN_AG(zero(Z)) → SUCC_IN_AG(Z)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
PiDP
                ↳ UsableRulesProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

ADDY_IN_AAG1(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDC_IN_AAG1(one(X), one(Y), one(Z)) → ADDC_IN_AAG(X, Y, Z)
ADDX_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDY_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDC_IN_AAG1(one(X), zero(Y), zero(Z)) → ADDY_IN_AAG1(X, Y, Z)
ADDZ_IN_AAG(zero(X), one(Y), one(Z)) → ADDX_IN_AAG(X, Y, Z)
ADDC_IN_AAG1(zero(X), one(Y), zero(Z)) → ADDX_IN_AAG1(X, Y, Z)
ADDZ_IN_AAG(zero(X), zero(Y), zero(Z)) → ADDZ_IN_AAG(X, Y, Z)
ADDC_IN_AAG(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDX_IN_AAG1(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDZ_IN_AAG(one(X), zero(Y), one(Z)) → ADDY_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(one(X), one(Y), zero(Z)) → ADDC_IN_AAG(X, Y, Z)
ADDC_IN_AAG1(zero(X), zero(Y), one(Z)) → ADDZ_IN_AAG(X, Y, Z)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g
U27_g(x1, x2)  =  U27_g(x2)
binaryZ_out_g(x1)  =  binaryZ_out_g
U28_g(x1, x2)  =  U28_g(x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2)
U14_aag(x1, x2, x3)  =  U14_aag(x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1)
U34_ag(x1, x2, x3)  =  U34_ag(x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x3)
U15_aag(x1, x2, x3)  =  U15_aag(x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2)
U18_aag(x1, x2, x3)  =  U18_aag(x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2)
U21_aag(x1, x2, x3)  =  U21_aag(x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x4)
ADDC_IN_AAG(x1, x2, x3)  =  ADDC_IN_AAG(x3)
ADDX_IN_AAG(x1, x2, x3)  =  ADDX_IN_AAG(x3)
ADDY_IN_AAG(x1, x2, x3)  =  ADDY_IN_AAG(x3)
ADDZ_IN_AAG(x1, x2, x3)  =  ADDZ_IN_AAG(x3)
ADDY_IN_AAG1(x1, x2, x3)  =  ADDY_IN_AAG1(x3)
ADDC_IN_AAG1(x1, x2, x3)  =  ADDC_IN_AAG1(x3)
ADDX_IN_AAG1(x1, x2, x3)  =  ADDX_IN_AAG1(x3)

We have to consider all (P,R,Pi)-chains
For (infinitary) constructor rewriting [30] we can delete all non-usable rules from R.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
PiDP
                    ↳ PiDPToQDPProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

ADDY_IN_AAG1(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDC_IN_AAG1(one(X), one(Y), one(Z)) → ADDC_IN_AAG(X, Y, Z)
ADDX_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDY_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDC_IN_AAG1(one(X), zero(Y), zero(Z)) → ADDY_IN_AAG1(X, Y, Z)
ADDZ_IN_AAG(zero(X), one(Y), one(Z)) → ADDX_IN_AAG(X, Y, Z)
ADDC_IN_AAG1(zero(X), one(Y), zero(Z)) → ADDX_IN_AAG1(X, Y, Z)
ADDZ_IN_AAG(zero(X), zero(Y), zero(Z)) → ADDZ_IN_AAG(X, Y, Z)
ADDC_IN_AAG(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDX_IN_AAG1(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDZ_IN_AAG(one(X), zero(Y), one(Z)) → ADDY_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(one(X), one(Y), zero(Z)) → ADDC_IN_AAG(X, Y, Z)
ADDC_IN_AAG1(zero(X), zero(Y), one(Z)) → ADDZ_IN_AAG(X, Y, Z)

R is empty.
The argument filtering Pi contains the following mapping:
zero(x1)  =  zero(x1)
one(x1)  =  one(x1)
ADDC_IN_AAG(x1, x2, x3)  =  ADDC_IN_AAG(x3)
ADDX_IN_AAG(x1, x2, x3)  =  ADDX_IN_AAG(x3)
ADDY_IN_AAG(x1, x2, x3)  =  ADDY_IN_AAG(x3)
ADDZ_IN_AAG(x1, x2, x3)  =  ADDZ_IN_AAG(x3)
ADDY_IN_AAG1(x1, x2, x3)  =  ADDY_IN_AAG1(x3)
ADDC_IN_AAG1(x1, x2, x3)  =  ADDC_IN_AAG1(x3)
ADDX_IN_AAG1(x1, x2, x3)  =  ADDX_IN_AAG1(x3)

We have to consider all (P,R,Pi)-chains
Transforming (infinitary) constructor rewriting Pi-DP problem [30] into ordinary QDP problem [15] by application of Pi.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
                  ↳ PiDP
                    ↳ PiDPToQDPProof
QDP
                        ↳ QDPSizeChangeProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Q DP problem:
The TRS P consists of the following rules:

ADDX_IN_AAG1(Z) → ADDC_IN_AAG1(Z)
ADDY_IN_AAG(Z) → ADDZ_IN_AAG(Z)
ADDZ_IN_AAG(zero(Z)) → ADDC_IN_AAG(Z)
ADDC_IN_AAG1(one(Z)) → ADDC_IN_AAG(Z)
ADDZ_IN_AAG(one(Z)) → ADDX_IN_AAG(Z)
ADDC_IN_AAG1(one(Z)) → ADDZ_IN_AAG(Z)
ADDC_IN_AAG1(zero(Z)) → ADDY_IN_AAG1(Z)
ADDZ_IN_AAG(zero(Z)) → ADDZ_IN_AAG(Z)
ADDX_IN_AAG(Z) → ADDZ_IN_AAG(Z)
ADDC_IN_AAG1(zero(Z)) → ADDX_IN_AAG1(Z)
ADDC_IN_AAG(Z) → ADDC_IN_AAG1(Z)
ADDZ_IN_AAG(one(Z)) → ADDY_IN_AAG(Z)
ADDY_IN_AAG1(Z) → ADDC_IN_AAG1(Z)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
PiDP
                ↳ UsableRulesProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

BINARY_IN_A(one(X)) → BINARY_IN_A(X)
BINARYZ_IN_A(one(X)) → BINARY_IN_A(X)
BINARY_IN_A(zero(X)) → BINARYZ_IN_A(X)
BINARYZ_IN_A(zero(X)) → BINARYZ_IN_A(X)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g
U27_g(x1, x2)  =  U27_g(x2)
binaryZ_out_g(x1)  =  binaryZ_out_g
U28_g(x1, x2)  =  U28_g(x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2)
U14_aag(x1, x2, x3)  =  U14_aag(x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1)
U34_ag(x1, x2, x3)  =  U34_ag(x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x3)
U15_aag(x1, x2, x3)  =  U15_aag(x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2)
U18_aag(x1, x2, x3)  =  U18_aag(x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2)
U21_aag(x1, x2, x3)  =  U21_aag(x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x4)
BINARY_IN_A(x1)  =  BINARY_IN_A
BINARYZ_IN_A(x1)  =  BINARYZ_IN_A

We have to consider all (P,R,Pi)-chains
For (infinitary) constructor rewriting [30] we can delete all non-usable rules from R.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
PiDP
                    ↳ PiDPToQDPProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

BINARY_IN_A(one(X)) → BINARY_IN_A(X)
BINARYZ_IN_A(one(X)) → BINARY_IN_A(X)
BINARY_IN_A(zero(X)) → BINARYZ_IN_A(X)
BINARYZ_IN_A(zero(X)) → BINARYZ_IN_A(X)

R is empty.
The argument filtering Pi contains the following mapping:
zero(x1)  =  zero(x1)
one(x1)  =  one(x1)
BINARY_IN_A(x1)  =  BINARY_IN_A
BINARYZ_IN_A(x1)  =  BINARYZ_IN_A

We have to consider all (P,R,Pi)-chains
Transforming (infinitary) constructor rewriting Pi-DP problem [30] into ordinary QDP problem [15] by application of Pi.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
                  ↳ PiDP
                    ↳ PiDPToQDPProof
QDP
                        ↳ NonTerminationProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Q DP problem:
The TRS P consists of the following rules:

BINARYZ_IN_ABINARYZ_IN_A
BINARY_IN_ABINARY_IN_A
BINARY_IN_ABINARYZ_IN_A
BINARYZ_IN_ABINARY_IN_A

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.
We used the non-termination processor [17] to show that the DP problem is infinite.
Found a loop by semiunifying a rule from P directly.

The TRS P consists of the following rules:

BINARYZ_IN_ABINARYZ_IN_A
BINARY_IN_ABINARY_IN_A
BINARY_IN_ABINARYZ_IN_A
BINARYZ_IN_ABINARY_IN_A

The TRS R consists of the following rules:none


s = BINARYZ_IN_A evaluates to t =BINARYZ_IN_A

Thus s starts an infinite chain as s semiunifies with t with the following substitutions:




Rewriting sequence

The DP semiunifies directly so there is only one rewrite step from BINARYZ_IN_A to BINARYZ_IN_A.





↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
PiDP
                ↳ UsableRulesProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

SUCC_IN_AA(one(X), zero(Z)) → SUCC_IN_AA(X, Z)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g
U27_g(x1, x2)  =  U27_g(x2)
binaryZ_out_g(x1)  =  binaryZ_out_g
U28_g(x1, x2)  =  U28_g(x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2)
U14_aag(x1, x2, x3)  =  U14_aag(x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1)
U34_ag(x1, x2, x3)  =  U34_ag(x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x3)
U15_aag(x1, x2, x3)  =  U15_aag(x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2)
U18_aag(x1, x2, x3)  =  U18_aag(x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2)
U21_aag(x1, x2, x3)  =  U21_aag(x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x4)
SUCC_IN_AA(x1, x2)  =  SUCC_IN_AA

We have to consider all (P,R,Pi)-chains
For (infinitary) constructor rewriting [30] we can delete all non-usable rules from R.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
PiDP
                    ↳ PiDPToQDPProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

SUCC_IN_AA(one(X), zero(Z)) → SUCC_IN_AA(X, Z)

R is empty.
The argument filtering Pi contains the following mapping:
zero(x1)  =  zero(x1)
one(x1)  =  one(x1)
SUCC_IN_AA(x1, x2)  =  SUCC_IN_AA

We have to consider all (P,R,Pi)-chains
Transforming (infinitary) constructor rewriting Pi-DP problem [30] into ordinary QDP problem [15] by application of Pi.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
                  ↳ PiDP
                    ↳ PiDPToQDPProof
QDP
                        ↳ NonTerminationProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Q DP problem:
The TRS P consists of the following rules:

SUCC_IN_AASUCC_IN_AA

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.
We used the non-termination processor [17] to show that the DP problem is infinite.
Found a loop by semiunifying a rule from P directly.

The TRS P consists of the following rules:

SUCC_IN_AASUCC_IN_AA

The TRS R consists of the following rules:none


s = SUCC_IN_AA evaluates to t =SUCC_IN_AA

Thus s starts an infinite chain as s semiunifies with t with the following substitutions:




Rewriting sequence

The DP semiunifies directly so there is only one rewrite step from SUCC_IN_AA to SUCC_IN_AA.





↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
PiDP
                ↳ UsableRulesProof
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

ADDZ_IN_AAA(one(X), zero(Y), one(Z)) → ADDY_IN_AAA(X, Y, Z)
ADDY_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDY_IN_AAA1(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDX_IN_AAA1(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(one(X), one(Y), one(Z)) → ADDC_IN_AAA(X, Y, Z)
ADDC_IN_AAA1(one(X), zero(Y), zero(Z)) → ADDY_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(zero(X), one(Y), zero(Z)) → ADDX_IN_AAA1(X, Y, Z)
ADDZ_IN_AAA(one(X), one(Y), zero(Z)) → ADDC_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(zero(X), zero(Y), zero(Z)) → ADDZ_IN_AAA(X, Y, Z)
ADDX_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDC_IN_AAA1(zero(X), zero(Y), one(Z)) → ADDZ_IN_AAA(X, Y, Z)
ADDC_IN_AAA(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDZ_IN_AAA(zero(X), one(Y), one(Z)) → ADDX_IN_AAA(X, Y, Z)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g
U27_g(x1, x2)  =  U27_g(x2)
binaryZ_out_g(x1)  =  binaryZ_out_g
U28_g(x1, x2)  =  U28_g(x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2)
U14_aag(x1, x2, x3)  =  U14_aag(x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1)
U34_ag(x1, x2, x3)  =  U34_ag(x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x3)
U15_aag(x1, x2, x3)  =  U15_aag(x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2)
U18_aag(x1, x2, x3)  =  U18_aag(x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2)
U21_aag(x1, x2, x3)  =  U21_aag(x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x4)
ADDY_IN_AAA(x1, x2, x3)  =  ADDY_IN_AAA
ADDC_IN_AAA(x1, x2, x3)  =  ADDC_IN_AAA
ADDX_IN_AAA(x1, x2, x3)  =  ADDX_IN_AAA
ADDY_IN_AAA1(x1, x2, x3)  =  ADDY_IN_AAA1
ADDZ_IN_AAA(x1, x2, x3)  =  ADDZ_IN_AAA
ADDC_IN_AAA1(x1, x2, x3)  =  ADDC_IN_AAA1
ADDX_IN_AAA1(x1, x2, x3)  =  ADDX_IN_AAA1

We have to consider all (P,R,Pi)-chains
For (infinitary) constructor rewriting [30] we can delete all non-usable rules from R.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
PiDP
                    ↳ PiDPToQDPProof
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

ADDZ_IN_AAA(one(X), zero(Y), one(Z)) → ADDY_IN_AAA(X, Y, Z)
ADDY_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDY_IN_AAA1(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDX_IN_AAA1(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(one(X), one(Y), one(Z)) → ADDC_IN_AAA(X, Y, Z)
ADDC_IN_AAA1(one(X), zero(Y), zero(Z)) → ADDY_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(zero(X), one(Y), zero(Z)) → ADDX_IN_AAA1(X, Y, Z)
ADDZ_IN_AAA(one(X), one(Y), zero(Z)) → ADDC_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(zero(X), zero(Y), zero(Z)) → ADDZ_IN_AAA(X, Y, Z)
ADDX_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDC_IN_AAA1(zero(X), zero(Y), one(Z)) → ADDZ_IN_AAA(X, Y, Z)
ADDC_IN_AAA(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDZ_IN_AAA(zero(X), one(Y), one(Z)) → ADDX_IN_AAA(X, Y, Z)

R is empty.
The argument filtering Pi contains the following mapping:
zero(x1)  =  zero(x1)
one(x1)  =  one(x1)
ADDY_IN_AAA(x1, x2, x3)  =  ADDY_IN_AAA
ADDC_IN_AAA(x1, x2, x3)  =  ADDC_IN_AAA
ADDX_IN_AAA(x1, x2, x3)  =  ADDX_IN_AAA
ADDY_IN_AAA1(x1, x2, x3)  =  ADDY_IN_AAA1
ADDZ_IN_AAA(x1, x2, x3)  =  ADDZ_IN_AAA
ADDC_IN_AAA1(x1, x2, x3)  =  ADDC_IN_AAA1
ADDX_IN_AAA1(x1, x2, x3)  =  ADDX_IN_AAA1

We have to consider all (P,R,Pi)-chains
Transforming (infinitary) constructor rewriting Pi-DP problem [30] into ordinary QDP problem [15] by application of Pi.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
                  ↳ PiDP
                    ↳ PiDPToQDPProof
QDP
                        ↳ NonTerminationProof
              ↳ PiDP
              ↳ PiDP
  ↳ PrologToPiTRSProof

Q DP problem:
The TRS P consists of the following rules:

ADDC_IN_AAA1ADDC_IN_AAA
ADDC_IN_AAA1ADDX_IN_AAA1
ADDC_IN_AAAADDC_IN_AAA1
ADDC_IN_AAA1ADDZ_IN_AAA
ADDZ_IN_AAAADDX_IN_AAA
ADDY_IN_AAAADDZ_IN_AAA
ADDX_IN_AAAADDZ_IN_AAA
ADDZ_IN_AAAADDY_IN_AAA
ADDY_IN_AAA1ADDC_IN_AAA1
ADDZ_IN_AAAADDC_IN_AAA
ADDC_IN_AAA1ADDY_IN_AAA1
ADDZ_IN_AAAADDZ_IN_AAA
ADDX_IN_AAA1ADDC_IN_AAA1

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.
We used the non-termination processor [17] to show that the DP problem is infinite.
Found a loop by semiunifying a rule from P directly.

The TRS P consists of the following rules:

ADDC_IN_AAA1ADDC_IN_AAA
ADDC_IN_AAA1ADDX_IN_AAA1
ADDC_IN_AAAADDC_IN_AAA1
ADDC_IN_AAA1ADDZ_IN_AAA
ADDZ_IN_AAAADDX_IN_AAA
ADDY_IN_AAAADDZ_IN_AAA
ADDX_IN_AAAADDZ_IN_AAA
ADDZ_IN_AAAADDY_IN_AAA
ADDY_IN_AAA1ADDC_IN_AAA1
ADDZ_IN_AAAADDC_IN_AAA
ADDC_IN_AAA1ADDY_IN_AAA1
ADDZ_IN_AAAADDZ_IN_AAA
ADDX_IN_AAA1ADDC_IN_AAA1

The TRS R consists of the following rules:none


s = ADDZ_IN_AAA evaluates to t =ADDZ_IN_AAA

Thus s starts an infinite chain as s semiunifies with t with the following substitutions:




Rewriting sequence

The DP semiunifies directly so there is only one rewrite step from ADDZ_IN_AAA to ADDZ_IN_AAA.





↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
PiDP
                ↳ UsableRulesProof
              ↳ PiDP
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

TIMES_IN_AAA(one(R), S, RSS) → TIMES_IN_AAA(R, S, RS)
TIMES_IN_AAA(zero(R), S, zero(RS)) → TIMES_IN_AAA(R, S, RS)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g
U27_g(x1, x2)  =  U27_g(x2)
binaryZ_out_g(x1)  =  binaryZ_out_g
U28_g(x1, x2)  =  U28_g(x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2)
U14_aag(x1, x2, x3)  =  U14_aag(x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1)
U34_ag(x1, x2, x3)  =  U34_ag(x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x3)
U15_aag(x1, x2, x3)  =  U15_aag(x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2)
U18_aag(x1, x2, x3)  =  U18_aag(x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2)
U21_aag(x1, x2, x3)  =  U21_aag(x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x4)
TIMES_IN_AAA(x1, x2, x3)  =  TIMES_IN_AAA

We have to consider all (P,R,Pi)-chains
For (infinitary) constructor rewriting [30] we can delete all non-usable rules from R.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
PiDP
                    ↳ PiDPToQDPProof
              ↳ PiDP
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

TIMES_IN_AAA(one(R), S, RSS) → TIMES_IN_AAA(R, S, RS)
TIMES_IN_AAA(zero(R), S, zero(RS)) → TIMES_IN_AAA(R, S, RS)

R is empty.
The argument filtering Pi contains the following mapping:
zero(x1)  =  zero(x1)
one(x1)  =  one(x1)
TIMES_IN_AAA(x1, x2, x3)  =  TIMES_IN_AAA

We have to consider all (P,R,Pi)-chains
Transforming (infinitary) constructor rewriting Pi-DP problem [30] into ordinary QDP problem [15] by application of Pi.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
                  ↳ PiDP
                    ↳ PiDPToQDPProof
QDP
                        ↳ NonTerminationProof
              ↳ PiDP
  ↳ PrologToPiTRSProof

Q DP problem:
The TRS P consists of the following rules:

TIMES_IN_AAATIMES_IN_AAA

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.
We used the non-termination processor [17] to show that the DP problem is infinite.
Found a loop by semiunifying a rule from P directly.

The TRS P consists of the following rules:

TIMES_IN_AAATIMES_IN_AAA

The TRS R consists of the following rules:none


s = TIMES_IN_AAA evaluates to t =TIMES_IN_AAA

Thus s starts an infinite chain as s semiunifies with t with the following substitutions:




Rewriting sequence

The DP semiunifies directly so there is only one rewrite step from TIMES_IN_AAA to TIMES_IN_AAA.





↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
PiDP
                ↳ UsableRulesProof
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

TIMES_IN_AAG(zero(R), S, zero(RS)) → TIMES_IN_AAG(R, S, RS)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g
U27_g(x1, x2)  =  U27_g(x2)
binaryZ_out_g(x1)  =  binaryZ_out_g
U28_g(x1, x2)  =  U28_g(x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2)
U14_aag(x1, x2, x3)  =  U14_aag(x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1)
U34_ag(x1, x2, x3)  =  U34_ag(x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x3)
U15_aag(x1, x2, x3)  =  U15_aag(x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2)
U18_aag(x1, x2, x3)  =  U18_aag(x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2)
U21_aag(x1, x2, x3)  =  U21_aag(x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x4)
TIMES_IN_AAG(x1, x2, x3)  =  TIMES_IN_AAG(x3)

We have to consider all (P,R,Pi)-chains
For (infinitary) constructor rewriting [30] we can delete all non-usable rules from R.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
PiDP
                    ↳ PiDPToQDPProof
  ↳ PrologToPiTRSProof

Pi DP problem:
The TRS P consists of the following rules:

TIMES_IN_AAG(zero(R), S, zero(RS)) → TIMES_IN_AAG(R, S, RS)

R is empty.
The argument filtering Pi contains the following mapping:
zero(x1)  =  zero(x1)
TIMES_IN_AAG(x1, x2, x3)  =  TIMES_IN_AAG(x3)

We have to consider all (P,R,Pi)-chains
Transforming (infinitary) constructor rewriting Pi-DP problem [30] into ordinary QDP problem [15] by application of Pi.

↳ Prolog
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
                  ↳ PiDP
                    ↳ PiDPToQDPProof
QDP
                        ↳ QDPSizeChangeProof
  ↳ PrologToPiTRSProof

Q DP problem:
The TRS P consists of the following rules:

TIMES_IN_AAG(zero(RS)) → TIMES_IN_AAG(RS)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:


We use the technique of [30]. With regard to the inferred argument filtering the predicates were used in the following modes:
times_in: (f,f,b) (f,f,f)
add_in: (f,f,f) (f,f,b)
binaryZ_in: (f) (b)
binary_in: (f) (b)
addz_in: (f,f,f) (f,f,b)
addx_in: (f,f,f) (f,f,b)
addy_in: (f,f,f) (f,f,b)
addc_in: (f,f,f) (f,f,b)
succZ_in: (f,f) (f,b)
succ_in: (f,f) (f,b)
addC_in: (f,f,f) (f,f,b)
addX_in: (f,f,f) (f,f,b)
addY_in: (f,f,f) (f,f,b)
Transforming Prolog into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2, x3)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x3, x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x3, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2, x3)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x1, x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x1, x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g(x1)
U27_g(x1, x2)  =  U27_g(x1, x2)
binaryZ_out_g(x1)  =  binaryZ_out_g(x1)
U28_g(x1, x2)  =  U28_g(x1, x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x3, x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x3, x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x3, x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2, x3)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x3, x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x3, x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2, x3)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x3, x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x3, x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2, x3)
U14_aag(x1, x2, x3)  =  U14_aag(x2, x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1, x2)
U34_ag(x1, x2, x3)  =  U34_ag(x2, x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1, x2)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x2, x3)
U15_aag(x1, x2, x3)  =  U15_aag(x2, x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x3, x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x3, x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2, x3)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2, x3)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x3, x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2, x3)
U18_aag(x1, x2, x3)  =  U18_aag(x2, x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x3, x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x3, x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2, x3)
U21_aag(x1, x2, x3)  =  U21_aag(x2, x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x3, x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x3, x4)

Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog



↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
PiTRS
      ↳ DependencyPairsProof

Pi-finite rewrite system:
The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2, x3)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x3, x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x3, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2, x3)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x1, x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x1, x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g(x1)
U27_g(x1, x2)  =  U27_g(x1, x2)
binaryZ_out_g(x1)  =  binaryZ_out_g(x1)
U28_g(x1, x2)  =  U28_g(x1, x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x3, x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x3, x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x3, x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2, x3)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x3, x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x3, x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2, x3)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x3, x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x3, x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2, x3)
U14_aag(x1, x2, x3)  =  U14_aag(x2, x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1, x2)
U34_ag(x1, x2, x3)  =  U34_ag(x2, x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1, x2)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x2, x3)
U15_aag(x1, x2, x3)  =  U15_aag(x2, x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x3, x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x3, x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2, x3)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2, x3)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x3, x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2, x3)
U18_aag(x1, x2, x3)  =  U18_aag(x2, x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x3, x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x3, x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2, x3)
U21_aag(x1, x2, x3)  =  U21_aag(x2, x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x3, x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x3, x4)


Using Dependency Pairs [1,30] we result in the following initial DP problem:
Pi DP problem:
The TRS P consists of the following rules:

TIMES_IN_AAG(zero(R), S, zero(RS)) → U35_AAG(R, S, RS, times_in_aag(R, S, RS))
TIMES_IN_AAG(zero(R), S, zero(RS)) → TIMES_IN_AAG(R, S, RS)
TIMES_IN_AAG(one(R), S, RSS) → U36_AAG(R, S, RSS, times_in_aaa(R, S, RS))
TIMES_IN_AAG(one(R), S, RSS) → TIMES_IN_AAA(R, S, RS)
TIMES_IN_AAA(zero(R), S, zero(RS)) → U35_AAA(R, S, RS, times_in_aaa(R, S, RS))
TIMES_IN_AAA(zero(R), S, zero(RS)) → TIMES_IN_AAA(R, S, RS)
TIMES_IN_AAA(one(R), S, RSS) → U36_AAA(R, S, RSS, times_in_aaa(R, S, RS))
TIMES_IN_AAA(one(R), S, RSS) → TIMES_IN_AAA(R, S, RS)
U36_AAA(R, S, RSS, times_out_aaa(R, S, RS)) → U37_AAA(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
U36_AAA(R, S, RSS, times_out_aaa(R, S, RS)) → ADD_IN_AAA(S, zero(RS), RSS)
ADD_IN_AAA(X, b, X) → U1_AAA(X, binaryZ_in_a(X))
ADD_IN_AAA(X, b, X) → BINARYZ_IN_A(X)
BINARYZ_IN_A(zero(X)) → U29_A(X, binaryZ_in_a(X))
BINARYZ_IN_A(zero(X)) → BINARYZ_IN_A(X)
BINARYZ_IN_A(one(X)) → U30_A(X, binary_in_a(X))
BINARYZ_IN_A(one(X)) → BINARY_IN_A(X)
BINARY_IN_A(zero(X)) → U27_A(X, binaryZ_in_a(X))
BINARY_IN_A(zero(X)) → BINARYZ_IN_A(X)
BINARY_IN_A(one(X)) → U28_A(X, binary_in_a(X))
BINARY_IN_A(one(X)) → BINARY_IN_A(X)
ADD_IN_AAA(b, Y, Y) → U2_AAA(Y, binaryZ_in_a(Y))
ADD_IN_AAA(b, Y, Y) → BINARYZ_IN_A(Y)
ADD_IN_AAA(X, Y, Z) → U3_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADD_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(zero(X), zero(Y), zero(Z)) → U10_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADDZ_IN_AAA(zero(X), zero(Y), zero(Z)) → ADDZ_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(zero(X), one(Y), one(Z)) → U11_AAA(X, Y, Z, addx_in_aaa(X, Y, Z))
ADDZ_IN_AAA(zero(X), one(Y), one(Z)) → ADDX_IN_AAA(X, Y, Z)
ADDX_IN_AAA(one(X), b, one(X)) → U4_AAA(X, binary_in_a(X))
ADDX_IN_AAA(one(X), b, one(X)) → BINARY_IN_A(X)
ADDX_IN_AAA(zero(X), b, zero(X)) → U5_AAA(X, binaryZ_in_a(X))
ADDX_IN_AAA(zero(X), b, zero(X)) → BINARYZ_IN_A(X)
ADDX_IN_AAA(X, Y, Z) → U6_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADDX_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(one(X), zero(Y), one(Z)) → U12_AAA(X, Y, Z, addy_in_aaa(X, Y, Z))
ADDZ_IN_AAA(one(X), zero(Y), one(Z)) → ADDY_IN_AAA(X, Y, Z)
ADDY_IN_AAA(b, one(Y), one(Y)) → U7_AAA(Y, binary_in_a(Y))
ADDY_IN_AAA(b, one(Y), one(Y)) → BINARY_IN_A(Y)
ADDY_IN_AAA(b, zero(Y), zero(Y)) → U8_AAA(Y, binaryZ_in_a(Y))
ADDY_IN_AAA(b, zero(Y), zero(Y)) → BINARYZ_IN_A(Y)
ADDY_IN_AAA(X, Y, Z) → U9_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADDY_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(one(X), one(Y), zero(Z)) → U13_AAA(X, Y, Z, addc_in_aaa(X, Y, Z))
ADDZ_IN_AAA(one(X), one(Y), zero(Z)) → ADDC_IN_AAA(X, Y, Z)
ADDC_IN_AAA(X, b, Z) → U14_AAA(X, Z, succZ_in_aa(X, Z))
ADDC_IN_AAA(X, b, Z) → SUCCZ_IN_AA(X, Z)
SUCCZ_IN_AA(zero(X), one(X)) → U33_AA(X, binaryZ_in_a(X))
SUCCZ_IN_AA(zero(X), one(X)) → BINARYZ_IN_A(X)
SUCCZ_IN_AA(one(X), zero(Z)) → U34_AA(X, Z, succ_in_aa(X, Z))
SUCCZ_IN_AA(one(X), zero(Z)) → SUCC_IN_AA(X, Z)
SUCC_IN_AA(zero(X), one(X)) → U31_AA(X, binaryZ_in_a(X))
SUCC_IN_AA(zero(X), one(X)) → BINARYZ_IN_A(X)
SUCC_IN_AA(one(X), zero(Z)) → U32_AA(X, Z, succ_in_aa(X, Z))
SUCC_IN_AA(one(X), zero(Z)) → SUCC_IN_AA(X, Z)
ADDC_IN_AAA(b, Y, Z) → U15_AAA(Y, Z, succZ_in_aa(Y, Z))
ADDC_IN_AAA(b, Y, Z) → SUCCZ_IN_AA(Y, Z)
ADDC_IN_AAA(X, Y, Z) → U16_AAA(X, Y, Z, addC_in_aaa(X, Y, Z))
ADDC_IN_AAA(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(zero(X), zero(Y), one(Z)) → U23_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADDC_IN_AAA1(zero(X), zero(Y), one(Z)) → ADDZ_IN_AAA(X, Y, Z)
ADDC_IN_AAA1(zero(X), one(Y), zero(Z)) → U24_AAA(X, Y, Z, addX_in_aaa(X, Y, Z))
ADDC_IN_AAA1(zero(X), one(Y), zero(Z)) → ADDX_IN_AAA1(X, Y, Z)
ADDX_IN_AAA1(zero(X), b, one(X)) → U17_AAA(X, binaryZ_in_a(X))
ADDX_IN_AAA1(zero(X), b, one(X)) → BINARYZ_IN_A(X)
ADDX_IN_AAA1(one(X), b, zero(Z)) → U18_AAA(X, Z, succ_in_aa(X, Z))
ADDX_IN_AAA1(one(X), b, zero(Z)) → SUCC_IN_AA(X, Z)
ADDX_IN_AAA1(X, Y, Z) → U19_AAA(X, Y, Z, addC_in_aaa(X, Y, Z))
ADDX_IN_AAA1(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(one(X), zero(Y), zero(Z)) → U25_AAA(X, Y, Z, addY_in_aaa(X, Y, Z))
ADDC_IN_AAA1(one(X), zero(Y), zero(Z)) → ADDY_IN_AAA1(X, Y, Z)
ADDY_IN_AAA1(b, zero(Y), one(Y)) → U20_AAA(Y, binaryZ_in_a(Y))
ADDY_IN_AAA1(b, zero(Y), one(Y)) → BINARYZ_IN_A(Y)
ADDY_IN_AAA1(b, one(Y), zero(Z)) → U21_AAA(Y, Z, succ_in_aa(Y, Z))
ADDY_IN_AAA1(b, one(Y), zero(Z)) → SUCC_IN_AA(Y, Z)
ADDY_IN_AAA1(X, Y, Z) → U22_AAA(X, Y, Z, addC_in_aaa(X, Y, Z))
ADDY_IN_AAA1(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(one(X), one(Y), one(Z)) → U26_AAA(X, Y, Z, addc_in_aaa(X, Y, Z))
ADDC_IN_AAA1(one(X), one(Y), one(Z)) → ADDC_IN_AAA(X, Y, Z)
U36_AAG(R, S, RSS, times_out_aaa(R, S, RS)) → U37_AAG(R, S, RSS, add_in_aag(S, zero(RS), RSS))
U36_AAG(R, S, RSS, times_out_aaa(R, S, RS)) → ADD_IN_AAG(S, zero(RS), RSS)
ADD_IN_AAG(X, b, X) → U1_AAG(X, binaryZ_in_g(X))
ADD_IN_AAG(X, b, X) → BINARYZ_IN_G(X)
BINARYZ_IN_G(zero(X)) → U29_G(X, binaryZ_in_g(X))
BINARYZ_IN_G(zero(X)) → BINARYZ_IN_G(X)
BINARYZ_IN_G(one(X)) → U30_G(X, binary_in_g(X))
BINARYZ_IN_G(one(X)) → BINARY_IN_G(X)
BINARY_IN_G(zero(X)) → U27_G(X, binaryZ_in_g(X))
BINARY_IN_G(zero(X)) → BINARYZ_IN_G(X)
BINARY_IN_G(one(X)) → U28_G(X, binary_in_g(X))
BINARY_IN_G(one(X)) → BINARY_IN_G(X)
ADD_IN_AAG(b, Y, Y) → U2_AAG(Y, binaryZ_in_g(Y))
ADD_IN_AAG(b, Y, Y) → BINARYZ_IN_G(Y)
ADD_IN_AAG(X, Y, Z) → U3_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADD_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(zero(X), zero(Y), zero(Z)) → U10_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADDZ_IN_AAG(zero(X), zero(Y), zero(Z)) → ADDZ_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(zero(X), one(Y), one(Z)) → U11_AAG(X, Y, Z, addx_in_aag(X, Y, Z))
ADDZ_IN_AAG(zero(X), one(Y), one(Z)) → ADDX_IN_AAG(X, Y, Z)
ADDX_IN_AAG(one(X), b, one(X)) → U4_AAG(X, binary_in_g(X))
ADDX_IN_AAG(one(X), b, one(X)) → BINARY_IN_G(X)
ADDX_IN_AAG(zero(X), b, zero(X)) → U5_AAG(X, binaryZ_in_g(X))
ADDX_IN_AAG(zero(X), b, zero(X)) → BINARYZ_IN_G(X)
ADDX_IN_AAG(X, Y, Z) → U6_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADDX_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(one(X), zero(Y), one(Z)) → U12_AAG(X, Y, Z, addy_in_aag(X, Y, Z))
ADDZ_IN_AAG(one(X), zero(Y), one(Z)) → ADDY_IN_AAG(X, Y, Z)
ADDY_IN_AAG(b, one(Y), one(Y)) → U7_AAG(Y, binary_in_g(Y))
ADDY_IN_AAG(b, one(Y), one(Y)) → BINARY_IN_G(Y)
ADDY_IN_AAG(b, zero(Y), zero(Y)) → U8_AAG(Y, binaryZ_in_g(Y))
ADDY_IN_AAG(b, zero(Y), zero(Y)) → BINARYZ_IN_G(Y)
ADDY_IN_AAG(X, Y, Z) → U9_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADDY_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(one(X), one(Y), zero(Z)) → U13_AAG(X, Y, Z, addc_in_aag(X, Y, Z))
ADDZ_IN_AAG(one(X), one(Y), zero(Z)) → ADDC_IN_AAG(X, Y, Z)
ADDC_IN_AAG(X, b, Z) → U14_AAG(X, Z, succZ_in_ag(X, Z))
ADDC_IN_AAG(X, b, Z) → SUCCZ_IN_AG(X, Z)
SUCCZ_IN_AG(zero(X), one(X)) → U33_AG(X, binaryZ_in_g(X))
SUCCZ_IN_AG(zero(X), one(X)) → BINARYZ_IN_G(X)
SUCCZ_IN_AG(one(X), zero(Z)) → U34_AG(X, Z, succ_in_ag(X, Z))
SUCCZ_IN_AG(one(X), zero(Z)) → SUCC_IN_AG(X, Z)
SUCC_IN_AG(zero(X), one(X)) → U31_AG(X, binaryZ_in_g(X))
SUCC_IN_AG(zero(X), one(X)) → BINARYZ_IN_G(X)
SUCC_IN_AG(one(X), zero(Z)) → U32_AG(X, Z, succ_in_ag(X, Z))
SUCC_IN_AG(one(X), zero(Z)) → SUCC_IN_AG(X, Z)
ADDC_IN_AAG(b, Y, Z) → U15_AAG(Y, Z, succZ_in_ag(Y, Z))
ADDC_IN_AAG(b, Y, Z) → SUCCZ_IN_AG(Y, Z)
ADDC_IN_AAG(X, Y, Z) → U16_AAG(X, Y, Z, addC_in_aag(X, Y, Z))
ADDC_IN_AAG(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDC_IN_AAG1(zero(X), zero(Y), one(Z)) → U23_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADDC_IN_AAG1(zero(X), zero(Y), one(Z)) → ADDZ_IN_AAG(X, Y, Z)
ADDC_IN_AAG1(zero(X), one(Y), zero(Z)) → U24_AAG(X, Y, Z, addX_in_aag(X, Y, Z))
ADDC_IN_AAG1(zero(X), one(Y), zero(Z)) → ADDX_IN_AAG1(X, Y, Z)
ADDX_IN_AAG1(zero(X), b, one(X)) → U17_AAG(X, binaryZ_in_g(X))
ADDX_IN_AAG1(zero(X), b, one(X)) → BINARYZ_IN_G(X)
ADDX_IN_AAG1(one(X), b, zero(Z)) → U18_AAG(X, Z, succ_in_ag(X, Z))
ADDX_IN_AAG1(one(X), b, zero(Z)) → SUCC_IN_AG(X, Z)
ADDX_IN_AAG1(X, Y, Z) → U19_AAG(X, Y, Z, addC_in_aag(X, Y, Z))
ADDX_IN_AAG1(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDC_IN_AAG1(one(X), zero(Y), zero(Z)) → U25_AAG(X, Y, Z, addY_in_aag(X, Y, Z))
ADDC_IN_AAG1(one(X), zero(Y), zero(Z)) → ADDY_IN_AAG1(X, Y, Z)
ADDY_IN_AAG1(b, zero(Y), one(Y)) → U20_AAG(Y, binaryZ_in_g(Y))
ADDY_IN_AAG1(b, zero(Y), one(Y)) → BINARYZ_IN_G(Y)
ADDY_IN_AAG1(b, one(Y), zero(Z)) → U21_AAG(Y, Z, succ_in_ag(Y, Z))
ADDY_IN_AAG1(b, one(Y), zero(Z)) → SUCC_IN_AG(Y, Z)
ADDY_IN_AAG1(X, Y, Z) → U22_AAG(X, Y, Z, addC_in_aag(X, Y, Z))
ADDY_IN_AAG1(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDC_IN_AAG1(one(X), one(Y), one(Z)) → U26_AAG(X, Y, Z, addc_in_aag(X, Y, Z))
ADDC_IN_AAG1(one(X), one(Y), one(Z)) → ADDC_IN_AAG(X, Y, Z)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2, x3)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x3, x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x3, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2, x3)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x1, x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x1, x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g(x1)
U27_g(x1, x2)  =  U27_g(x1, x2)
binaryZ_out_g(x1)  =  binaryZ_out_g(x1)
U28_g(x1, x2)  =  U28_g(x1, x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x3, x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x3, x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x3, x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2, x3)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x3, x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x3, x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2, x3)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x3, x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x3, x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2, x3)
U14_aag(x1, x2, x3)  =  U14_aag(x2, x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1, x2)
U34_ag(x1, x2, x3)  =  U34_ag(x2, x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1, x2)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x2, x3)
U15_aag(x1, x2, x3)  =  U15_aag(x2, x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x3, x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x3, x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2, x3)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2, x3)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x3, x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2, x3)
U18_aag(x1, x2, x3)  =  U18_aag(x2, x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x3, x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x3, x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2, x3)
U21_aag(x1, x2, x3)  =  U21_aag(x2, x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x3, x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x3, x4)
U5_AAG(x1, x2)  =  U5_AAG(x1, x2)
U18_AAG(x1, x2, x3)  =  U18_AAG(x2, x3)
U28_A(x1, x2)  =  U28_A(x2)
U9_AAG(x1, x2, x3, x4)  =  U9_AAG(x3, x4)
U20_AAG(x1, x2)  =  U20_AAG(x1, x2)
U22_AAA(x1, x2, x3, x4)  =  U22_AAA(x4)
U13_AAG(x1, x2, x3, x4)  =  U13_AAG(x3, x4)
SUCC_IN_AA(x1, x2)  =  SUCC_IN_AA
U30_G(x1, x2)  =  U30_G(x1, x2)
U31_AA(x1, x2)  =  U31_AA(x2)
U3_AAA(x1, x2, x3, x4)  =  U3_AAA(x4)
U20_AAA(x1, x2)  =  U20_AAA(x2)
U37_AAA(x1, x2, x3, x4)  =  U37_AAA(x1, x4)
U15_AAG(x1, x2, x3)  =  U15_AAG(x2, x3)
ADDY_IN_AAA(x1, x2, x3)  =  ADDY_IN_AAA
U19_AAG(x1, x2, x3, x4)  =  U19_AAG(x3, x4)
U11_AAG(x1, x2, x3, x4)  =  U11_AAG(x3, x4)
BINARYZ_IN_G(x1)  =  BINARYZ_IN_G(x1)
U15_AAA(x1, x2, x3)  =  U15_AAA(x3)
SUCC_IN_AG(x1, x2)  =  SUCC_IN_AG(x2)
U21_AAA(x1, x2, x3)  =  U21_AAA(x3)
U14_AAG(x1, x2, x3)  =  U14_AAG(x2, x3)
BINARY_IN_A(x1)  =  BINARY_IN_A
U23_AAA(x1, x2, x3, x4)  =  U23_AAA(x4)
U8_AAA(x1, x2)  =  U8_AAA(x2)
TIMES_IN_AAG(x1, x2, x3)  =  TIMES_IN_AAG(x3)
ADDC_IN_AAG(x1, x2, x3)  =  ADDC_IN_AAG(x3)
U17_AAA(x1, x2)  =  U17_AAA(x2)
ADDX_IN_AAG(x1, x2, x3)  =  ADDX_IN_AAG(x3)
U26_AAA(x1, x2, x3, x4)  =  U26_AAA(x4)
TIMES_IN_AAA(x1, x2, x3)  =  TIMES_IN_AAA
U11_AAA(x1, x2, x3, x4)  =  U11_AAA(x4)
SUCCZ_IN_AA(x1, x2)  =  SUCCZ_IN_AA
U27_A(x1, x2)  =  U27_A(x2)
U22_AAG(x1, x2, x3, x4)  =  U22_AAG(x3, x4)
BINARYZ_IN_A(x1)  =  BINARYZ_IN_A
U2_AAG(x1, x2)  =  U2_AAG(x1, x2)
ADDC_IN_AAA(x1, x2, x3)  =  ADDC_IN_AAA
U35_AAA(x1, x2, x3, x4)  =  U35_AAA(x4)
U26_AAG(x1, x2, x3, x4)  =  U26_AAG(x3, x4)
U9_AAA(x1, x2, x3, x4)  =  U9_AAA(x4)
U34_AG(x1, x2, x3)  =  U34_AG(x2, x3)
U4_AAA(x1, x2)  =  U4_AAA(x2)
U12_AAG(x1, x2, x3, x4)  =  U12_AAG(x3, x4)
U24_AAG(x1, x2, x3, x4)  =  U24_AAG(x3, x4)
U25_AAA(x1, x2, x3, x4)  =  U25_AAA(x4)
U14_AAA(x1, x2, x3)  =  U14_AAA(x3)
U6_AAG(x1, x2, x3, x4)  =  U6_AAG(x3, x4)
ADDY_IN_AAG(x1, x2, x3)  =  ADDY_IN_AAG(x3)
U24_AAA(x1, x2, x3, x4)  =  U24_AAA(x4)
ADDX_IN_AAA(x1, x2, x3)  =  ADDX_IN_AAA
U2_AAA(x1, x2)  =  U2_AAA(x2)
U29_G(x1, x2)  =  U29_G(x1, x2)
U4_AAG(x1, x2)  =  U4_AAG(x1, x2)
U31_AG(x1, x2)  =  U31_AG(x1, x2)
U27_G(x1, x2)  =  U27_G(x1, x2)
ADDZ_IN_AAG(x1, x2, x3)  =  ADDZ_IN_AAG(x3)
U32_AA(x1, x2, x3)  =  U32_AA(x3)
ADD_IN_AAG(x1, x2, x3)  =  ADD_IN_AAG(x3)
U36_AAG(x1, x2, x3, x4)  =  U36_AAG(x3, x4)
U28_G(x1, x2)  =  U28_G(x1, x2)
ADD_IN_AAA(x1, x2, x3)  =  ADD_IN_AAA
SUCCZ_IN_AG(x1, x2)  =  SUCCZ_IN_AG(x2)
U16_AAA(x1, x2, x3, x4)  =  U16_AAA(x4)
U17_AAG(x1, x2)  =  U17_AAG(x1, x2)
U1_AAA(x1, x2)  =  U1_AAA(x2)
U1_AAG(x1, x2)  =  U1_AAG(x1, x2)
ADDY_IN_AAA1(x1, x2, x3)  =  ADDY_IN_AAA1
ADDY_IN_AAG1(x1, x2, x3)  =  ADDY_IN_AAG1(x3)
U5_AAA(x1, x2)  =  U5_AAA(x2)
BINARY_IN_G(x1)  =  BINARY_IN_G(x1)
U3_AAG(x1, x2, x3, x4)  =  U3_AAG(x3, x4)
U13_AAA(x1, x2, x3, x4)  =  U13_AAA(x4)
U7_AAG(x1, x2)  =  U7_AAG(x1, x2)
U7_AAA(x1, x2)  =  U7_AAA(x2)
U12_AAA(x1, x2, x3, x4)  =  U12_AAA(x4)
U16_AAG(x1, x2, x3, x4)  =  U16_AAG(x3, x4)
U21_AAG(x1, x2, x3)  =  U21_AAG(x2, x3)
U34_AA(x1, x2, x3)  =  U34_AA(x3)
U37_AAG(x1, x2, x3, x4)  =  U37_AAG(x1, x3, x4)
U8_AAG(x1, x2)  =  U8_AAG(x1, x2)
U35_AAG(x1, x2, x3, x4)  =  U35_AAG(x3, x4)
ADDZ_IN_AAA(x1, x2, x3)  =  ADDZ_IN_AAA
U23_AAG(x1, x2, x3, x4)  =  U23_AAG(x3, x4)
U25_AAG(x1, x2, x3, x4)  =  U25_AAG(x3, x4)
U10_AAA(x1, x2, x3, x4)  =  U10_AAA(x4)
ADDC_IN_AAG1(x1, x2, x3)  =  ADDC_IN_AAG1(x3)
ADDC_IN_AAA1(x1, x2, x3)  =  ADDC_IN_AAA1
U6_AAA(x1, x2, x3, x4)  =  U6_AAA(x4)
ADDX_IN_AAG1(x1, x2, x3)  =  ADDX_IN_AAG1(x3)
U18_AAA(x1, x2, x3)  =  U18_AAA(x3)
U30_A(x1, x2)  =  U30_A(x2)
U36_AAA(x1, x2, x3, x4)  =  U36_AAA(x4)
U19_AAA(x1, x2, x3, x4)  =  U19_AAA(x4)
U10_AAG(x1, x2, x3, x4)  =  U10_AAG(x3, x4)
U33_AA(x1, x2)  =  U33_AA(x2)
U32_AG(x1, x2, x3)  =  U32_AG(x2, x3)
ADDX_IN_AAA1(x1, x2, x3)  =  ADDX_IN_AAA1
U29_A(x1, x2)  =  U29_A(x2)
U33_AG(x1, x2)  =  U33_AG(x1, x2)

We have to consider all (P,R,Pi)-chains

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
PiDP
          ↳ DependencyGraphProof

Pi DP problem:
The TRS P consists of the following rules:

TIMES_IN_AAG(zero(R), S, zero(RS)) → U35_AAG(R, S, RS, times_in_aag(R, S, RS))
TIMES_IN_AAG(zero(R), S, zero(RS)) → TIMES_IN_AAG(R, S, RS)
TIMES_IN_AAG(one(R), S, RSS) → U36_AAG(R, S, RSS, times_in_aaa(R, S, RS))
TIMES_IN_AAG(one(R), S, RSS) → TIMES_IN_AAA(R, S, RS)
TIMES_IN_AAA(zero(R), S, zero(RS)) → U35_AAA(R, S, RS, times_in_aaa(R, S, RS))
TIMES_IN_AAA(zero(R), S, zero(RS)) → TIMES_IN_AAA(R, S, RS)
TIMES_IN_AAA(one(R), S, RSS) → U36_AAA(R, S, RSS, times_in_aaa(R, S, RS))
TIMES_IN_AAA(one(R), S, RSS) → TIMES_IN_AAA(R, S, RS)
U36_AAA(R, S, RSS, times_out_aaa(R, S, RS)) → U37_AAA(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
U36_AAA(R, S, RSS, times_out_aaa(R, S, RS)) → ADD_IN_AAA(S, zero(RS), RSS)
ADD_IN_AAA(X, b, X) → U1_AAA(X, binaryZ_in_a(X))
ADD_IN_AAA(X, b, X) → BINARYZ_IN_A(X)
BINARYZ_IN_A(zero(X)) → U29_A(X, binaryZ_in_a(X))
BINARYZ_IN_A(zero(X)) → BINARYZ_IN_A(X)
BINARYZ_IN_A(one(X)) → U30_A(X, binary_in_a(X))
BINARYZ_IN_A(one(X)) → BINARY_IN_A(X)
BINARY_IN_A(zero(X)) → U27_A(X, binaryZ_in_a(X))
BINARY_IN_A(zero(X)) → BINARYZ_IN_A(X)
BINARY_IN_A(one(X)) → U28_A(X, binary_in_a(X))
BINARY_IN_A(one(X)) → BINARY_IN_A(X)
ADD_IN_AAA(b, Y, Y) → U2_AAA(Y, binaryZ_in_a(Y))
ADD_IN_AAA(b, Y, Y) → BINARYZ_IN_A(Y)
ADD_IN_AAA(X, Y, Z) → U3_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADD_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(zero(X), zero(Y), zero(Z)) → U10_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADDZ_IN_AAA(zero(X), zero(Y), zero(Z)) → ADDZ_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(zero(X), one(Y), one(Z)) → U11_AAA(X, Y, Z, addx_in_aaa(X, Y, Z))
ADDZ_IN_AAA(zero(X), one(Y), one(Z)) → ADDX_IN_AAA(X, Y, Z)
ADDX_IN_AAA(one(X), b, one(X)) → U4_AAA(X, binary_in_a(X))
ADDX_IN_AAA(one(X), b, one(X)) → BINARY_IN_A(X)
ADDX_IN_AAA(zero(X), b, zero(X)) → U5_AAA(X, binaryZ_in_a(X))
ADDX_IN_AAA(zero(X), b, zero(X)) → BINARYZ_IN_A(X)
ADDX_IN_AAA(X, Y, Z) → U6_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADDX_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(one(X), zero(Y), one(Z)) → U12_AAA(X, Y, Z, addy_in_aaa(X, Y, Z))
ADDZ_IN_AAA(one(X), zero(Y), one(Z)) → ADDY_IN_AAA(X, Y, Z)
ADDY_IN_AAA(b, one(Y), one(Y)) → U7_AAA(Y, binary_in_a(Y))
ADDY_IN_AAA(b, one(Y), one(Y)) → BINARY_IN_A(Y)
ADDY_IN_AAA(b, zero(Y), zero(Y)) → U8_AAA(Y, binaryZ_in_a(Y))
ADDY_IN_AAA(b, zero(Y), zero(Y)) → BINARYZ_IN_A(Y)
ADDY_IN_AAA(X, Y, Z) → U9_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADDY_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(one(X), one(Y), zero(Z)) → U13_AAA(X, Y, Z, addc_in_aaa(X, Y, Z))
ADDZ_IN_AAA(one(X), one(Y), zero(Z)) → ADDC_IN_AAA(X, Y, Z)
ADDC_IN_AAA(X, b, Z) → U14_AAA(X, Z, succZ_in_aa(X, Z))
ADDC_IN_AAA(X, b, Z) → SUCCZ_IN_AA(X, Z)
SUCCZ_IN_AA(zero(X), one(X)) → U33_AA(X, binaryZ_in_a(X))
SUCCZ_IN_AA(zero(X), one(X)) → BINARYZ_IN_A(X)
SUCCZ_IN_AA(one(X), zero(Z)) → U34_AA(X, Z, succ_in_aa(X, Z))
SUCCZ_IN_AA(one(X), zero(Z)) → SUCC_IN_AA(X, Z)
SUCC_IN_AA(zero(X), one(X)) → U31_AA(X, binaryZ_in_a(X))
SUCC_IN_AA(zero(X), one(X)) → BINARYZ_IN_A(X)
SUCC_IN_AA(one(X), zero(Z)) → U32_AA(X, Z, succ_in_aa(X, Z))
SUCC_IN_AA(one(X), zero(Z)) → SUCC_IN_AA(X, Z)
ADDC_IN_AAA(b, Y, Z) → U15_AAA(Y, Z, succZ_in_aa(Y, Z))
ADDC_IN_AAA(b, Y, Z) → SUCCZ_IN_AA(Y, Z)
ADDC_IN_AAA(X, Y, Z) → U16_AAA(X, Y, Z, addC_in_aaa(X, Y, Z))
ADDC_IN_AAA(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(zero(X), zero(Y), one(Z)) → U23_AAA(X, Y, Z, addz_in_aaa(X, Y, Z))
ADDC_IN_AAA1(zero(X), zero(Y), one(Z)) → ADDZ_IN_AAA(X, Y, Z)
ADDC_IN_AAA1(zero(X), one(Y), zero(Z)) → U24_AAA(X, Y, Z, addX_in_aaa(X, Y, Z))
ADDC_IN_AAA1(zero(X), one(Y), zero(Z)) → ADDX_IN_AAA1(X, Y, Z)
ADDX_IN_AAA1(zero(X), b, one(X)) → U17_AAA(X, binaryZ_in_a(X))
ADDX_IN_AAA1(zero(X), b, one(X)) → BINARYZ_IN_A(X)
ADDX_IN_AAA1(one(X), b, zero(Z)) → U18_AAA(X, Z, succ_in_aa(X, Z))
ADDX_IN_AAA1(one(X), b, zero(Z)) → SUCC_IN_AA(X, Z)
ADDX_IN_AAA1(X, Y, Z) → U19_AAA(X, Y, Z, addC_in_aaa(X, Y, Z))
ADDX_IN_AAA1(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(one(X), zero(Y), zero(Z)) → U25_AAA(X, Y, Z, addY_in_aaa(X, Y, Z))
ADDC_IN_AAA1(one(X), zero(Y), zero(Z)) → ADDY_IN_AAA1(X, Y, Z)
ADDY_IN_AAA1(b, zero(Y), one(Y)) → U20_AAA(Y, binaryZ_in_a(Y))
ADDY_IN_AAA1(b, zero(Y), one(Y)) → BINARYZ_IN_A(Y)
ADDY_IN_AAA1(b, one(Y), zero(Z)) → U21_AAA(Y, Z, succ_in_aa(Y, Z))
ADDY_IN_AAA1(b, one(Y), zero(Z)) → SUCC_IN_AA(Y, Z)
ADDY_IN_AAA1(X, Y, Z) → U22_AAA(X, Y, Z, addC_in_aaa(X, Y, Z))
ADDY_IN_AAA1(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(one(X), one(Y), one(Z)) → U26_AAA(X, Y, Z, addc_in_aaa(X, Y, Z))
ADDC_IN_AAA1(one(X), one(Y), one(Z)) → ADDC_IN_AAA(X, Y, Z)
U36_AAG(R, S, RSS, times_out_aaa(R, S, RS)) → U37_AAG(R, S, RSS, add_in_aag(S, zero(RS), RSS))
U36_AAG(R, S, RSS, times_out_aaa(R, S, RS)) → ADD_IN_AAG(S, zero(RS), RSS)
ADD_IN_AAG(X, b, X) → U1_AAG(X, binaryZ_in_g(X))
ADD_IN_AAG(X, b, X) → BINARYZ_IN_G(X)
BINARYZ_IN_G(zero(X)) → U29_G(X, binaryZ_in_g(X))
BINARYZ_IN_G(zero(X)) → BINARYZ_IN_G(X)
BINARYZ_IN_G(one(X)) → U30_G(X, binary_in_g(X))
BINARYZ_IN_G(one(X)) → BINARY_IN_G(X)
BINARY_IN_G(zero(X)) → U27_G(X, binaryZ_in_g(X))
BINARY_IN_G(zero(X)) → BINARYZ_IN_G(X)
BINARY_IN_G(one(X)) → U28_G(X, binary_in_g(X))
BINARY_IN_G(one(X)) → BINARY_IN_G(X)
ADD_IN_AAG(b, Y, Y) → U2_AAG(Y, binaryZ_in_g(Y))
ADD_IN_AAG(b, Y, Y) → BINARYZ_IN_G(Y)
ADD_IN_AAG(X, Y, Z) → U3_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADD_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(zero(X), zero(Y), zero(Z)) → U10_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADDZ_IN_AAG(zero(X), zero(Y), zero(Z)) → ADDZ_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(zero(X), one(Y), one(Z)) → U11_AAG(X, Y, Z, addx_in_aag(X, Y, Z))
ADDZ_IN_AAG(zero(X), one(Y), one(Z)) → ADDX_IN_AAG(X, Y, Z)
ADDX_IN_AAG(one(X), b, one(X)) → U4_AAG(X, binary_in_g(X))
ADDX_IN_AAG(one(X), b, one(X)) → BINARY_IN_G(X)
ADDX_IN_AAG(zero(X), b, zero(X)) → U5_AAG(X, binaryZ_in_g(X))
ADDX_IN_AAG(zero(X), b, zero(X)) → BINARYZ_IN_G(X)
ADDX_IN_AAG(X, Y, Z) → U6_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADDX_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(one(X), zero(Y), one(Z)) → U12_AAG(X, Y, Z, addy_in_aag(X, Y, Z))
ADDZ_IN_AAG(one(X), zero(Y), one(Z)) → ADDY_IN_AAG(X, Y, Z)
ADDY_IN_AAG(b, one(Y), one(Y)) → U7_AAG(Y, binary_in_g(Y))
ADDY_IN_AAG(b, one(Y), one(Y)) → BINARY_IN_G(Y)
ADDY_IN_AAG(b, zero(Y), zero(Y)) → U8_AAG(Y, binaryZ_in_g(Y))
ADDY_IN_AAG(b, zero(Y), zero(Y)) → BINARYZ_IN_G(Y)
ADDY_IN_AAG(X, Y, Z) → U9_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADDY_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(one(X), one(Y), zero(Z)) → U13_AAG(X, Y, Z, addc_in_aag(X, Y, Z))
ADDZ_IN_AAG(one(X), one(Y), zero(Z)) → ADDC_IN_AAG(X, Y, Z)
ADDC_IN_AAG(X, b, Z) → U14_AAG(X, Z, succZ_in_ag(X, Z))
ADDC_IN_AAG(X, b, Z) → SUCCZ_IN_AG(X, Z)
SUCCZ_IN_AG(zero(X), one(X)) → U33_AG(X, binaryZ_in_g(X))
SUCCZ_IN_AG(zero(X), one(X)) → BINARYZ_IN_G(X)
SUCCZ_IN_AG(one(X), zero(Z)) → U34_AG(X, Z, succ_in_ag(X, Z))
SUCCZ_IN_AG(one(X), zero(Z)) → SUCC_IN_AG(X, Z)
SUCC_IN_AG(zero(X), one(X)) → U31_AG(X, binaryZ_in_g(X))
SUCC_IN_AG(zero(X), one(X)) → BINARYZ_IN_G(X)
SUCC_IN_AG(one(X), zero(Z)) → U32_AG(X, Z, succ_in_ag(X, Z))
SUCC_IN_AG(one(X), zero(Z)) → SUCC_IN_AG(X, Z)
ADDC_IN_AAG(b, Y, Z) → U15_AAG(Y, Z, succZ_in_ag(Y, Z))
ADDC_IN_AAG(b, Y, Z) → SUCCZ_IN_AG(Y, Z)
ADDC_IN_AAG(X, Y, Z) → U16_AAG(X, Y, Z, addC_in_aag(X, Y, Z))
ADDC_IN_AAG(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDC_IN_AAG1(zero(X), zero(Y), one(Z)) → U23_AAG(X, Y, Z, addz_in_aag(X, Y, Z))
ADDC_IN_AAG1(zero(X), zero(Y), one(Z)) → ADDZ_IN_AAG(X, Y, Z)
ADDC_IN_AAG1(zero(X), one(Y), zero(Z)) → U24_AAG(X, Y, Z, addX_in_aag(X, Y, Z))
ADDC_IN_AAG1(zero(X), one(Y), zero(Z)) → ADDX_IN_AAG1(X, Y, Z)
ADDX_IN_AAG1(zero(X), b, one(X)) → U17_AAG(X, binaryZ_in_g(X))
ADDX_IN_AAG1(zero(X), b, one(X)) → BINARYZ_IN_G(X)
ADDX_IN_AAG1(one(X), b, zero(Z)) → U18_AAG(X, Z, succ_in_ag(X, Z))
ADDX_IN_AAG1(one(X), b, zero(Z)) → SUCC_IN_AG(X, Z)
ADDX_IN_AAG1(X, Y, Z) → U19_AAG(X, Y, Z, addC_in_aag(X, Y, Z))
ADDX_IN_AAG1(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDC_IN_AAG1(one(X), zero(Y), zero(Z)) → U25_AAG(X, Y, Z, addY_in_aag(X, Y, Z))
ADDC_IN_AAG1(one(X), zero(Y), zero(Z)) → ADDY_IN_AAG1(X, Y, Z)
ADDY_IN_AAG1(b, zero(Y), one(Y)) → U20_AAG(Y, binaryZ_in_g(Y))
ADDY_IN_AAG1(b, zero(Y), one(Y)) → BINARYZ_IN_G(Y)
ADDY_IN_AAG1(b, one(Y), zero(Z)) → U21_AAG(Y, Z, succ_in_ag(Y, Z))
ADDY_IN_AAG1(b, one(Y), zero(Z)) → SUCC_IN_AG(Y, Z)
ADDY_IN_AAG1(X, Y, Z) → U22_AAG(X, Y, Z, addC_in_aag(X, Y, Z))
ADDY_IN_AAG1(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDC_IN_AAG1(one(X), one(Y), one(Z)) → U26_AAG(X, Y, Z, addc_in_aag(X, Y, Z))
ADDC_IN_AAG1(one(X), one(Y), one(Z)) → ADDC_IN_AAG(X, Y, Z)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2, x3)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x3, x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x3, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2, x3)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x1, x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x1, x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g(x1)
U27_g(x1, x2)  =  U27_g(x1, x2)
binaryZ_out_g(x1)  =  binaryZ_out_g(x1)
U28_g(x1, x2)  =  U28_g(x1, x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x3, x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x3, x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x3, x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2, x3)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x3, x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x3, x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2, x3)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x3, x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x3, x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2, x3)
U14_aag(x1, x2, x3)  =  U14_aag(x2, x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1, x2)
U34_ag(x1, x2, x3)  =  U34_ag(x2, x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1, x2)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x2, x3)
U15_aag(x1, x2, x3)  =  U15_aag(x2, x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x3, x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x3, x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2, x3)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2, x3)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x3, x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2, x3)
U18_aag(x1, x2, x3)  =  U18_aag(x2, x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x3, x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x3, x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2, x3)
U21_aag(x1, x2, x3)  =  U21_aag(x2, x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x3, x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x3, x4)
U5_AAG(x1, x2)  =  U5_AAG(x1, x2)
U18_AAG(x1, x2, x3)  =  U18_AAG(x2, x3)
U28_A(x1, x2)  =  U28_A(x2)
U9_AAG(x1, x2, x3, x4)  =  U9_AAG(x3, x4)
U20_AAG(x1, x2)  =  U20_AAG(x1, x2)
U22_AAA(x1, x2, x3, x4)  =  U22_AAA(x4)
U13_AAG(x1, x2, x3, x4)  =  U13_AAG(x3, x4)
SUCC_IN_AA(x1, x2)  =  SUCC_IN_AA
U30_G(x1, x2)  =  U30_G(x1, x2)
U31_AA(x1, x2)  =  U31_AA(x2)
U3_AAA(x1, x2, x3, x4)  =  U3_AAA(x4)
U20_AAA(x1, x2)  =  U20_AAA(x2)
U37_AAA(x1, x2, x3, x4)  =  U37_AAA(x1, x4)
U15_AAG(x1, x2, x3)  =  U15_AAG(x2, x3)
ADDY_IN_AAA(x1, x2, x3)  =  ADDY_IN_AAA
U19_AAG(x1, x2, x3, x4)  =  U19_AAG(x3, x4)
U11_AAG(x1, x2, x3, x4)  =  U11_AAG(x3, x4)
BINARYZ_IN_G(x1)  =  BINARYZ_IN_G(x1)
U15_AAA(x1, x2, x3)  =  U15_AAA(x3)
SUCC_IN_AG(x1, x2)  =  SUCC_IN_AG(x2)
U21_AAA(x1, x2, x3)  =  U21_AAA(x3)
U14_AAG(x1, x2, x3)  =  U14_AAG(x2, x3)
BINARY_IN_A(x1)  =  BINARY_IN_A
U23_AAA(x1, x2, x3, x4)  =  U23_AAA(x4)
U8_AAA(x1, x2)  =  U8_AAA(x2)
TIMES_IN_AAG(x1, x2, x3)  =  TIMES_IN_AAG(x3)
ADDC_IN_AAG(x1, x2, x3)  =  ADDC_IN_AAG(x3)
U17_AAA(x1, x2)  =  U17_AAA(x2)
ADDX_IN_AAG(x1, x2, x3)  =  ADDX_IN_AAG(x3)
U26_AAA(x1, x2, x3, x4)  =  U26_AAA(x4)
TIMES_IN_AAA(x1, x2, x3)  =  TIMES_IN_AAA
U11_AAA(x1, x2, x3, x4)  =  U11_AAA(x4)
SUCCZ_IN_AA(x1, x2)  =  SUCCZ_IN_AA
U27_A(x1, x2)  =  U27_A(x2)
U22_AAG(x1, x2, x3, x4)  =  U22_AAG(x3, x4)
BINARYZ_IN_A(x1)  =  BINARYZ_IN_A
U2_AAG(x1, x2)  =  U2_AAG(x1, x2)
ADDC_IN_AAA(x1, x2, x3)  =  ADDC_IN_AAA
U35_AAA(x1, x2, x3, x4)  =  U35_AAA(x4)
U26_AAG(x1, x2, x3, x4)  =  U26_AAG(x3, x4)
U9_AAA(x1, x2, x3, x4)  =  U9_AAA(x4)
U34_AG(x1, x2, x3)  =  U34_AG(x2, x3)
U4_AAA(x1, x2)  =  U4_AAA(x2)
U12_AAG(x1, x2, x3, x4)  =  U12_AAG(x3, x4)
U24_AAG(x1, x2, x3, x4)  =  U24_AAG(x3, x4)
U25_AAA(x1, x2, x3, x4)  =  U25_AAA(x4)
U14_AAA(x1, x2, x3)  =  U14_AAA(x3)
U6_AAG(x1, x2, x3, x4)  =  U6_AAG(x3, x4)
ADDY_IN_AAG(x1, x2, x3)  =  ADDY_IN_AAG(x3)
U24_AAA(x1, x2, x3, x4)  =  U24_AAA(x4)
ADDX_IN_AAA(x1, x2, x3)  =  ADDX_IN_AAA
U2_AAA(x1, x2)  =  U2_AAA(x2)
U29_G(x1, x2)  =  U29_G(x1, x2)
U4_AAG(x1, x2)  =  U4_AAG(x1, x2)
U31_AG(x1, x2)  =  U31_AG(x1, x2)
U27_G(x1, x2)  =  U27_G(x1, x2)
ADDZ_IN_AAG(x1, x2, x3)  =  ADDZ_IN_AAG(x3)
U32_AA(x1, x2, x3)  =  U32_AA(x3)
ADD_IN_AAG(x1, x2, x3)  =  ADD_IN_AAG(x3)
U36_AAG(x1, x2, x3, x4)  =  U36_AAG(x3, x4)
U28_G(x1, x2)  =  U28_G(x1, x2)
ADD_IN_AAA(x1, x2, x3)  =  ADD_IN_AAA
SUCCZ_IN_AG(x1, x2)  =  SUCCZ_IN_AG(x2)
U16_AAA(x1, x2, x3, x4)  =  U16_AAA(x4)
U17_AAG(x1, x2)  =  U17_AAG(x1, x2)
U1_AAA(x1, x2)  =  U1_AAA(x2)
U1_AAG(x1, x2)  =  U1_AAG(x1, x2)
ADDY_IN_AAA1(x1, x2, x3)  =  ADDY_IN_AAA1
ADDY_IN_AAG1(x1, x2, x3)  =  ADDY_IN_AAG1(x3)
U5_AAA(x1, x2)  =  U5_AAA(x2)
BINARY_IN_G(x1)  =  BINARY_IN_G(x1)
U3_AAG(x1, x2, x3, x4)  =  U3_AAG(x3, x4)
U13_AAA(x1, x2, x3, x4)  =  U13_AAA(x4)
U7_AAG(x1, x2)  =  U7_AAG(x1, x2)
U7_AAA(x1, x2)  =  U7_AAA(x2)
U12_AAA(x1, x2, x3, x4)  =  U12_AAA(x4)
U16_AAG(x1, x2, x3, x4)  =  U16_AAG(x3, x4)
U21_AAG(x1, x2, x3)  =  U21_AAG(x2, x3)
U34_AA(x1, x2, x3)  =  U34_AA(x3)
U37_AAG(x1, x2, x3, x4)  =  U37_AAG(x1, x3, x4)
U8_AAG(x1, x2)  =  U8_AAG(x1, x2)
U35_AAG(x1, x2, x3, x4)  =  U35_AAG(x3, x4)
ADDZ_IN_AAA(x1, x2, x3)  =  ADDZ_IN_AAA
U23_AAG(x1, x2, x3, x4)  =  U23_AAG(x3, x4)
U25_AAG(x1, x2, x3, x4)  =  U25_AAG(x3, x4)
U10_AAA(x1, x2, x3, x4)  =  U10_AAA(x4)
ADDC_IN_AAG1(x1, x2, x3)  =  ADDC_IN_AAG1(x3)
ADDC_IN_AAA1(x1, x2, x3)  =  ADDC_IN_AAA1
U6_AAA(x1, x2, x3, x4)  =  U6_AAA(x4)
ADDX_IN_AAG1(x1, x2, x3)  =  ADDX_IN_AAG1(x3)
U18_AAA(x1, x2, x3)  =  U18_AAA(x3)
U30_A(x1, x2)  =  U30_A(x2)
U36_AAA(x1, x2, x3, x4)  =  U36_AAA(x4)
U19_AAA(x1, x2, x3, x4)  =  U19_AAA(x4)
U10_AAG(x1, x2, x3, x4)  =  U10_AAG(x3, x4)
U33_AA(x1, x2)  =  U33_AA(x2)
U32_AG(x1, x2, x3)  =  U32_AG(x2, x3)
ADDX_IN_AAA1(x1, x2, x3)  =  ADDX_IN_AAA1
U29_A(x1, x2)  =  U29_A(x2)
U33_AG(x1, x2)  =  U33_AG(x1, x2)

We have to consider all (P,R,Pi)-chains
The approximation of the Dependency Graph [30] contains 8 SCCs with 109 less nodes.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
PiDP
                ↳ UsableRulesProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP

Pi DP problem:
The TRS P consists of the following rules:

BINARY_IN_G(one(X)) → BINARY_IN_G(X)
BINARYZ_IN_G(one(X)) → BINARY_IN_G(X)
BINARY_IN_G(zero(X)) → BINARYZ_IN_G(X)
BINARYZ_IN_G(zero(X)) → BINARYZ_IN_G(X)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2, x3)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x3, x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x3, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2, x3)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x1, x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x1, x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g(x1)
U27_g(x1, x2)  =  U27_g(x1, x2)
binaryZ_out_g(x1)  =  binaryZ_out_g(x1)
U28_g(x1, x2)  =  U28_g(x1, x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x3, x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x3, x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x3, x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2, x3)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x3, x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x3, x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2, x3)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x3, x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x3, x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2, x3)
U14_aag(x1, x2, x3)  =  U14_aag(x2, x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1, x2)
U34_ag(x1, x2, x3)  =  U34_ag(x2, x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1, x2)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x2, x3)
U15_aag(x1, x2, x3)  =  U15_aag(x2, x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x3, x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x3, x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2, x3)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2, x3)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x3, x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2, x3)
U18_aag(x1, x2, x3)  =  U18_aag(x2, x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x3, x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x3, x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2, x3)
U21_aag(x1, x2, x3)  =  U21_aag(x2, x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x3, x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x3, x4)
BINARYZ_IN_G(x1)  =  BINARYZ_IN_G(x1)
BINARY_IN_G(x1)  =  BINARY_IN_G(x1)

We have to consider all (P,R,Pi)-chains
For (infinitary) constructor rewriting [30] we can delete all non-usable rules from R.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
                ↳ UsableRulesProof
PiDP
                    ↳ PiDPToQDPProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP

Pi DP problem:
The TRS P consists of the following rules:

BINARY_IN_G(one(X)) → BINARY_IN_G(X)
BINARYZ_IN_G(one(X)) → BINARY_IN_G(X)
BINARY_IN_G(zero(X)) → BINARYZ_IN_G(X)
BINARYZ_IN_G(zero(X)) → BINARYZ_IN_G(X)

R is empty.
Pi is empty.
We have to consider all (P,R,Pi)-chains
Transforming (infinitary) constructor rewriting Pi-DP problem [30] into ordinary QDP problem [15] by application of Pi.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
                ↳ UsableRulesProof
                  ↳ PiDP
                    ↳ PiDPToQDPProof
QDP
                        ↳ QDPSizeChangeProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP

Q DP problem:
The TRS P consists of the following rules:

BINARY_IN_G(one(X)) → BINARY_IN_G(X)
BINARYZ_IN_G(one(X)) → BINARY_IN_G(X)
BINARY_IN_G(zero(X)) → BINARYZ_IN_G(X)
BINARYZ_IN_G(zero(X)) → BINARYZ_IN_G(X)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
PiDP
                ↳ UsableRulesProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP

Pi DP problem:
The TRS P consists of the following rules:

SUCC_IN_AG(one(X), zero(Z)) → SUCC_IN_AG(X, Z)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2, x3)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x3, x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x3, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2, x3)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x1, x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x1, x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g(x1)
U27_g(x1, x2)  =  U27_g(x1, x2)
binaryZ_out_g(x1)  =  binaryZ_out_g(x1)
U28_g(x1, x2)  =  U28_g(x1, x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x3, x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x3, x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x3, x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2, x3)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x3, x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x3, x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2, x3)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x3, x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x3, x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2, x3)
U14_aag(x1, x2, x3)  =  U14_aag(x2, x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1, x2)
U34_ag(x1, x2, x3)  =  U34_ag(x2, x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1, x2)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x2, x3)
U15_aag(x1, x2, x3)  =  U15_aag(x2, x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x3, x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x3, x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2, x3)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2, x3)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x3, x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2, x3)
U18_aag(x1, x2, x3)  =  U18_aag(x2, x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x3, x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x3, x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2, x3)
U21_aag(x1, x2, x3)  =  U21_aag(x2, x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x3, x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x3, x4)
SUCC_IN_AG(x1, x2)  =  SUCC_IN_AG(x2)

We have to consider all (P,R,Pi)-chains
For (infinitary) constructor rewriting [30] we can delete all non-usable rules from R.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
PiDP
                    ↳ PiDPToQDPProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP

Pi DP problem:
The TRS P consists of the following rules:

SUCC_IN_AG(one(X), zero(Z)) → SUCC_IN_AG(X, Z)

R is empty.
The argument filtering Pi contains the following mapping:
zero(x1)  =  zero(x1)
one(x1)  =  one(x1)
SUCC_IN_AG(x1, x2)  =  SUCC_IN_AG(x2)

We have to consider all (P,R,Pi)-chains
Transforming (infinitary) constructor rewriting Pi-DP problem [30] into ordinary QDP problem [15] by application of Pi.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
                  ↳ PiDP
                    ↳ PiDPToQDPProof
QDP
                        ↳ QDPSizeChangeProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP

Q DP problem:
The TRS P consists of the following rules:

SUCC_IN_AG(zero(Z)) → SUCC_IN_AG(Z)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
PiDP
                ↳ UsableRulesProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP

Pi DP problem:
The TRS P consists of the following rules:

ADDY_IN_AAG1(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDC_IN_AAG1(one(X), one(Y), one(Z)) → ADDC_IN_AAG(X, Y, Z)
ADDX_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDY_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDC_IN_AAG1(one(X), zero(Y), zero(Z)) → ADDY_IN_AAG1(X, Y, Z)
ADDZ_IN_AAG(zero(X), one(Y), one(Z)) → ADDX_IN_AAG(X, Y, Z)
ADDC_IN_AAG1(zero(X), one(Y), zero(Z)) → ADDX_IN_AAG1(X, Y, Z)
ADDZ_IN_AAG(zero(X), zero(Y), zero(Z)) → ADDZ_IN_AAG(X, Y, Z)
ADDC_IN_AAG(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDX_IN_AAG1(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDZ_IN_AAG(one(X), zero(Y), one(Z)) → ADDY_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(one(X), one(Y), zero(Z)) → ADDC_IN_AAG(X, Y, Z)
ADDC_IN_AAG1(zero(X), zero(Y), one(Z)) → ADDZ_IN_AAG(X, Y, Z)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2, x3)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x3, x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x3, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2, x3)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x1, x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x1, x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g(x1)
U27_g(x1, x2)  =  U27_g(x1, x2)
binaryZ_out_g(x1)  =  binaryZ_out_g(x1)
U28_g(x1, x2)  =  U28_g(x1, x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x3, x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x3, x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x3, x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2, x3)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x3, x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x3, x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2, x3)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x3, x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x3, x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2, x3)
U14_aag(x1, x2, x3)  =  U14_aag(x2, x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1, x2)
U34_ag(x1, x2, x3)  =  U34_ag(x2, x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1, x2)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x2, x3)
U15_aag(x1, x2, x3)  =  U15_aag(x2, x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x3, x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x3, x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2, x3)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2, x3)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x3, x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2, x3)
U18_aag(x1, x2, x3)  =  U18_aag(x2, x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x3, x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x3, x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2, x3)
U21_aag(x1, x2, x3)  =  U21_aag(x2, x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x3, x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x3, x4)
ADDC_IN_AAG(x1, x2, x3)  =  ADDC_IN_AAG(x3)
ADDX_IN_AAG(x1, x2, x3)  =  ADDX_IN_AAG(x3)
ADDY_IN_AAG(x1, x2, x3)  =  ADDY_IN_AAG(x3)
ADDZ_IN_AAG(x1, x2, x3)  =  ADDZ_IN_AAG(x3)
ADDY_IN_AAG1(x1, x2, x3)  =  ADDY_IN_AAG1(x3)
ADDC_IN_AAG1(x1, x2, x3)  =  ADDC_IN_AAG1(x3)
ADDX_IN_AAG1(x1, x2, x3)  =  ADDX_IN_AAG1(x3)

We have to consider all (P,R,Pi)-chains
For (infinitary) constructor rewriting [30] we can delete all non-usable rules from R.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
PiDP
                    ↳ PiDPToQDPProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP

Pi DP problem:
The TRS P consists of the following rules:

ADDY_IN_AAG1(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDC_IN_AAG1(one(X), one(Y), one(Z)) → ADDC_IN_AAG(X, Y, Z)
ADDX_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDY_IN_AAG(X, Y, Z) → ADDZ_IN_AAG(X, Y, Z)
ADDC_IN_AAG1(one(X), zero(Y), zero(Z)) → ADDY_IN_AAG1(X, Y, Z)
ADDZ_IN_AAG(zero(X), one(Y), one(Z)) → ADDX_IN_AAG(X, Y, Z)
ADDC_IN_AAG1(zero(X), one(Y), zero(Z)) → ADDX_IN_AAG1(X, Y, Z)
ADDZ_IN_AAG(zero(X), zero(Y), zero(Z)) → ADDZ_IN_AAG(X, Y, Z)
ADDC_IN_AAG(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDX_IN_AAG1(X, Y, Z) → ADDC_IN_AAG1(X, Y, Z)
ADDZ_IN_AAG(one(X), zero(Y), one(Z)) → ADDY_IN_AAG(X, Y, Z)
ADDZ_IN_AAG(one(X), one(Y), zero(Z)) → ADDC_IN_AAG(X, Y, Z)
ADDC_IN_AAG1(zero(X), zero(Y), one(Z)) → ADDZ_IN_AAG(X, Y, Z)

R is empty.
The argument filtering Pi contains the following mapping:
zero(x1)  =  zero(x1)
one(x1)  =  one(x1)
ADDC_IN_AAG(x1, x2, x3)  =  ADDC_IN_AAG(x3)
ADDX_IN_AAG(x1, x2, x3)  =  ADDX_IN_AAG(x3)
ADDY_IN_AAG(x1, x2, x3)  =  ADDY_IN_AAG(x3)
ADDZ_IN_AAG(x1, x2, x3)  =  ADDZ_IN_AAG(x3)
ADDY_IN_AAG1(x1, x2, x3)  =  ADDY_IN_AAG1(x3)
ADDC_IN_AAG1(x1, x2, x3)  =  ADDC_IN_AAG1(x3)
ADDX_IN_AAG1(x1, x2, x3)  =  ADDX_IN_AAG1(x3)

We have to consider all (P,R,Pi)-chains
Transforming (infinitary) constructor rewriting Pi-DP problem [30] into ordinary QDP problem [15] by application of Pi.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
                  ↳ PiDP
                    ↳ PiDPToQDPProof
QDP
                        ↳ QDPSizeChangeProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP

Q DP problem:
The TRS P consists of the following rules:

ADDX_IN_AAG1(Z) → ADDC_IN_AAG1(Z)
ADDY_IN_AAG(Z) → ADDZ_IN_AAG(Z)
ADDZ_IN_AAG(zero(Z)) → ADDC_IN_AAG(Z)
ADDC_IN_AAG1(one(Z)) → ADDC_IN_AAG(Z)
ADDZ_IN_AAG(one(Z)) → ADDX_IN_AAG(Z)
ADDC_IN_AAG1(one(Z)) → ADDZ_IN_AAG(Z)
ADDC_IN_AAG1(zero(Z)) → ADDY_IN_AAG1(Z)
ADDZ_IN_AAG(zero(Z)) → ADDZ_IN_AAG(Z)
ADDX_IN_AAG(Z) → ADDZ_IN_AAG(Z)
ADDC_IN_AAG1(zero(Z)) → ADDX_IN_AAG1(Z)
ADDC_IN_AAG(Z) → ADDC_IN_AAG1(Z)
ADDZ_IN_AAG(one(Z)) → ADDY_IN_AAG(Z)
ADDY_IN_AAG1(Z) → ADDC_IN_AAG1(Z)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
PiDP
                ↳ UsableRulesProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP

Pi DP problem:
The TRS P consists of the following rules:

BINARY_IN_A(one(X)) → BINARY_IN_A(X)
BINARYZ_IN_A(one(X)) → BINARY_IN_A(X)
BINARY_IN_A(zero(X)) → BINARYZ_IN_A(X)
BINARYZ_IN_A(zero(X)) → BINARYZ_IN_A(X)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2, x3)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x3, x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x3, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2, x3)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x1, x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x1, x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g(x1)
U27_g(x1, x2)  =  U27_g(x1, x2)
binaryZ_out_g(x1)  =  binaryZ_out_g(x1)
U28_g(x1, x2)  =  U28_g(x1, x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x3, x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x3, x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x3, x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2, x3)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x3, x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x3, x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2, x3)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x3, x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x3, x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2, x3)
U14_aag(x1, x2, x3)  =  U14_aag(x2, x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1, x2)
U34_ag(x1, x2, x3)  =  U34_ag(x2, x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1, x2)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x2, x3)
U15_aag(x1, x2, x3)  =  U15_aag(x2, x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x3, x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x3, x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2, x3)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2, x3)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x3, x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2, x3)
U18_aag(x1, x2, x3)  =  U18_aag(x2, x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x3, x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x3, x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2, x3)
U21_aag(x1, x2, x3)  =  U21_aag(x2, x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x3, x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x3, x4)
BINARY_IN_A(x1)  =  BINARY_IN_A
BINARYZ_IN_A(x1)  =  BINARYZ_IN_A

We have to consider all (P,R,Pi)-chains
For (infinitary) constructor rewriting [30] we can delete all non-usable rules from R.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
PiDP
                    ↳ PiDPToQDPProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP

Pi DP problem:
The TRS P consists of the following rules:

BINARY_IN_A(one(X)) → BINARY_IN_A(X)
BINARYZ_IN_A(one(X)) → BINARY_IN_A(X)
BINARY_IN_A(zero(X)) → BINARYZ_IN_A(X)
BINARYZ_IN_A(zero(X)) → BINARYZ_IN_A(X)

R is empty.
The argument filtering Pi contains the following mapping:
zero(x1)  =  zero(x1)
one(x1)  =  one(x1)
BINARY_IN_A(x1)  =  BINARY_IN_A
BINARYZ_IN_A(x1)  =  BINARYZ_IN_A

We have to consider all (P,R,Pi)-chains
Transforming (infinitary) constructor rewriting Pi-DP problem [30] into ordinary QDP problem [15] by application of Pi.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
                  ↳ PiDP
                    ↳ PiDPToQDPProof
QDP
                        ↳ NonTerminationProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP

Q DP problem:
The TRS P consists of the following rules:

BINARYZ_IN_ABINARYZ_IN_A
BINARY_IN_ABINARY_IN_A
BINARY_IN_ABINARYZ_IN_A
BINARYZ_IN_ABINARY_IN_A

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.
We used the non-termination processor [17] to show that the DP problem is infinite.
Found a loop by semiunifying a rule from P directly.

The TRS P consists of the following rules:

BINARYZ_IN_ABINARYZ_IN_A
BINARY_IN_ABINARY_IN_A
BINARY_IN_ABINARYZ_IN_A
BINARYZ_IN_ABINARY_IN_A

The TRS R consists of the following rules:none


s = BINARYZ_IN_A evaluates to t =BINARYZ_IN_A

Thus s starts an infinite chain as s semiunifies with t with the following substitutions:




Rewriting sequence

The DP semiunifies directly so there is only one rewrite step from BINARYZ_IN_A to BINARYZ_IN_A.





↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
PiDP
                ↳ UsableRulesProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP

Pi DP problem:
The TRS P consists of the following rules:

SUCC_IN_AA(one(X), zero(Z)) → SUCC_IN_AA(X, Z)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2, x3)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x3, x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x3, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2, x3)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x1, x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x1, x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g(x1)
U27_g(x1, x2)  =  U27_g(x1, x2)
binaryZ_out_g(x1)  =  binaryZ_out_g(x1)
U28_g(x1, x2)  =  U28_g(x1, x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x3, x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x3, x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x3, x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2, x3)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x3, x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x3, x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2, x3)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x3, x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x3, x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2, x3)
U14_aag(x1, x2, x3)  =  U14_aag(x2, x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1, x2)
U34_ag(x1, x2, x3)  =  U34_ag(x2, x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1, x2)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x2, x3)
U15_aag(x1, x2, x3)  =  U15_aag(x2, x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x3, x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x3, x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2, x3)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2, x3)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x3, x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2, x3)
U18_aag(x1, x2, x3)  =  U18_aag(x2, x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x3, x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x3, x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2, x3)
U21_aag(x1, x2, x3)  =  U21_aag(x2, x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x3, x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x3, x4)
SUCC_IN_AA(x1, x2)  =  SUCC_IN_AA

We have to consider all (P,R,Pi)-chains
For (infinitary) constructor rewriting [30] we can delete all non-usable rules from R.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
PiDP
                    ↳ PiDPToQDPProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP

Pi DP problem:
The TRS P consists of the following rules:

SUCC_IN_AA(one(X), zero(Z)) → SUCC_IN_AA(X, Z)

R is empty.
The argument filtering Pi contains the following mapping:
zero(x1)  =  zero(x1)
one(x1)  =  one(x1)
SUCC_IN_AA(x1, x2)  =  SUCC_IN_AA

We have to consider all (P,R,Pi)-chains
Transforming (infinitary) constructor rewriting Pi-DP problem [30] into ordinary QDP problem [15] by application of Pi.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
                  ↳ PiDP
                    ↳ PiDPToQDPProof
QDP
                        ↳ NonTerminationProof
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP

Q DP problem:
The TRS P consists of the following rules:

SUCC_IN_AASUCC_IN_AA

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.
We used the non-termination processor [17] to show that the DP problem is infinite.
Found a loop by semiunifying a rule from P directly.

The TRS P consists of the following rules:

SUCC_IN_AASUCC_IN_AA

The TRS R consists of the following rules:none


s = SUCC_IN_AA evaluates to t =SUCC_IN_AA

Thus s starts an infinite chain as s semiunifies with t with the following substitutions:




Rewriting sequence

The DP semiunifies directly so there is only one rewrite step from SUCC_IN_AA to SUCC_IN_AA.





↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
PiDP
                ↳ UsableRulesProof
              ↳ PiDP
              ↳ PiDP

Pi DP problem:
The TRS P consists of the following rules:

ADDZ_IN_AAA(one(X), zero(Y), one(Z)) → ADDY_IN_AAA(X, Y, Z)
ADDY_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDY_IN_AAA1(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDX_IN_AAA1(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(one(X), one(Y), one(Z)) → ADDC_IN_AAA(X, Y, Z)
ADDC_IN_AAA1(one(X), zero(Y), zero(Z)) → ADDY_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(zero(X), one(Y), zero(Z)) → ADDX_IN_AAA1(X, Y, Z)
ADDZ_IN_AAA(one(X), one(Y), zero(Z)) → ADDC_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(zero(X), zero(Y), zero(Z)) → ADDZ_IN_AAA(X, Y, Z)
ADDX_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDC_IN_AAA1(zero(X), zero(Y), one(Z)) → ADDZ_IN_AAA(X, Y, Z)
ADDC_IN_AAA(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDZ_IN_AAA(zero(X), one(Y), one(Z)) → ADDX_IN_AAA(X, Y, Z)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2, x3)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x3, x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x3, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2, x3)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x1, x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x1, x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g(x1)
U27_g(x1, x2)  =  U27_g(x1, x2)
binaryZ_out_g(x1)  =  binaryZ_out_g(x1)
U28_g(x1, x2)  =  U28_g(x1, x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x3, x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x3, x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x3, x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2, x3)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x3, x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x3, x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2, x3)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x3, x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x3, x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2, x3)
U14_aag(x1, x2, x3)  =  U14_aag(x2, x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1, x2)
U34_ag(x1, x2, x3)  =  U34_ag(x2, x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1, x2)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x2, x3)
U15_aag(x1, x2, x3)  =  U15_aag(x2, x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x3, x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x3, x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2, x3)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2, x3)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x3, x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2, x3)
U18_aag(x1, x2, x3)  =  U18_aag(x2, x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x3, x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x3, x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2, x3)
U21_aag(x1, x2, x3)  =  U21_aag(x2, x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x3, x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x3, x4)
ADDY_IN_AAA(x1, x2, x3)  =  ADDY_IN_AAA
ADDC_IN_AAA(x1, x2, x3)  =  ADDC_IN_AAA
ADDX_IN_AAA(x1, x2, x3)  =  ADDX_IN_AAA
ADDY_IN_AAA1(x1, x2, x3)  =  ADDY_IN_AAA1
ADDZ_IN_AAA(x1, x2, x3)  =  ADDZ_IN_AAA
ADDC_IN_AAA1(x1, x2, x3)  =  ADDC_IN_AAA1
ADDX_IN_AAA1(x1, x2, x3)  =  ADDX_IN_AAA1

We have to consider all (P,R,Pi)-chains
For (infinitary) constructor rewriting [30] we can delete all non-usable rules from R.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
PiDP
                    ↳ PiDPToQDPProof
              ↳ PiDP
              ↳ PiDP

Pi DP problem:
The TRS P consists of the following rules:

ADDZ_IN_AAA(one(X), zero(Y), one(Z)) → ADDY_IN_AAA(X, Y, Z)
ADDY_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDY_IN_AAA1(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDX_IN_AAA1(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(one(X), one(Y), one(Z)) → ADDC_IN_AAA(X, Y, Z)
ADDC_IN_AAA1(one(X), zero(Y), zero(Z)) → ADDY_IN_AAA1(X, Y, Z)
ADDC_IN_AAA1(zero(X), one(Y), zero(Z)) → ADDX_IN_AAA1(X, Y, Z)
ADDZ_IN_AAA(one(X), one(Y), zero(Z)) → ADDC_IN_AAA(X, Y, Z)
ADDZ_IN_AAA(zero(X), zero(Y), zero(Z)) → ADDZ_IN_AAA(X, Y, Z)
ADDX_IN_AAA(X, Y, Z) → ADDZ_IN_AAA(X, Y, Z)
ADDC_IN_AAA1(zero(X), zero(Y), one(Z)) → ADDZ_IN_AAA(X, Y, Z)
ADDC_IN_AAA(X, Y, Z) → ADDC_IN_AAA1(X, Y, Z)
ADDZ_IN_AAA(zero(X), one(Y), one(Z)) → ADDX_IN_AAA(X, Y, Z)

R is empty.
The argument filtering Pi contains the following mapping:
zero(x1)  =  zero(x1)
one(x1)  =  one(x1)
ADDY_IN_AAA(x1, x2, x3)  =  ADDY_IN_AAA
ADDC_IN_AAA(x1, x2, x3)  =  ADDC_IN_AAA
ADDX_IN_AAA(x1, x2, x3)  =  ADDX_IN_AAA
ADDY_IN_AAA1(x1, x2, x3)  =  ADDY_IN_AAA1
ADDZ_IN_AAA(x1, x2, x3)  =  ADDZ_IN_AAA
ADDC_IN_AAA1(x1, x2, x3)  =  ADDC_IN_AAA1
ADDX_IN_AAA1(x1, x2, x3)  =  ADDX_IN_AAA1

We have to consider all (P,R,Pi)-chains
Transforming (infinitary) constructor rewriting Pi-DP problem [30] into ordinary QDP problem [15] by application of Pi.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
                  ↳ PiDP
                    ↳ PiDPToQDPProof
QDP
                        ↳ NonTerminationProof
              ↳ PiDP
              ↳ PiDP

Q DP problem:
The TRS P consists of the following rules:

ADDC_IN_AAA1ADDC_IN_AAA
ADDC_IN_AAA1ADDX_IN_AAA1
ADDC_IN_AAAADDC_IN_AAA1
ADDC_IN_AAA1ADDZ_IN_AAA
ADDZ_IN_AAAADDX_IN_AAA
ADDY_IN_AAAADDZ_IN_AAA
ADDX_IN_AAAADDZ_IN_AAA
ADDZ_IN_AAAADDY_IN_AAA
ADDY_IN_AAA1ADDC_IN_AAA1
ADDZ_IN_AAAADDC_IN_AAA
ADDC_IN_AAA1ADDY_IN_AAA1
ADDZ_IN_AAAADDZ_IN_AAA
ADDX_IN_AAA1ADDC_IN_AAA1

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.
We used the non-termination processor [17] to show that the DP problem is infinite.
Found a loop by semiunifying a rule from P directly.

The TRS P consists of the following rules:

ADDC_IN_AAA1ADDC_IN_AAA
ADDC_IN_AAA1ADDX_IN_AAA1
ADDC_IN_AAAADDC_IN_AAA1
ADDC_IN_AAA1ADDZ_IN_AAA
ADDZ_IN_AAAADDX_IN_AAA
ADDY_IN_AAAADDZ_IN_AAA
ADDX_IN_AAAADDZ_IN_AAA
ADDZ_IN_AAAADDY_IN_AAA
ADDY_IN_AAA1ADDC_IN_AAA1
ADDZ_IN_AAAADDC_IN_AAA
ADDC_IN_AAA1ADDY_IN_AAA1
ADDZ_IN_AAAADDZ_IN_AAA
ADDX_IN_AAA1ADDC_IN_AAA1

The TRS R consists of the following rules:none


s = ADDZ_IN_AAA evaluates to t =ADDZ_IN_AAA

Thus s starts an infinite chain as s semiunifies with t with the following substitutions:




Rewriting sequence

The DP semiunifies directly so there is only one rewrite step from ADDZ_IN_AAA to ADDZ_IN_AAA.





↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
PiDP
                ↳ UsableRulesProof
              ↳ PiDP

Pi DP problem:
The TRS P consists of the following rules:

TIMES_IN_AAA(one(R), S, RSS) → TIMES_IN_AAA(R, S, RS)
TIMES_IN_AAA(zero(R), S, zero(RS)) → TIMES_IN_AAA(R, S, RS)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2, x3)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x3, x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x3, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2, x3)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x1, x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x1, x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g(x1)
U27_g(x1, x2)  =  U27_g(x1, x2)
binaryZ_out_g(x1)  =  binaryZ_out_g(x1)
U28_g(x1, x2)  =  U28_g(x1, x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x3, x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x3, x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x3, x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2, x3)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x3, x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x3, x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2, x3)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x3, x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x3, x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2, x3)
U14_aag(x1, x2, x3)  =  U14_aag(x2, x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1, x2)
U34_ag(x1, x2, x3)  =  U34_ag(x2, x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1, x2)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x2, x3)
U15_aag(x1, x2, x3)  =  U15_aag(x2, x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x3, x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x3, x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2, x3)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2, x3)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x3, x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2, x3)
U18_aag(x1, x2, x3)  =  U18_aag(x2, x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x3, x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x3, x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2, x3)
U21_aag(x1, x2, x3)  =  U21_aag(x2, x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x3, x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x3, x4)
TIMES_IN_AAA(x1, x2, x3)  =  TIMES_IN_AAA

We have to consider all (P,R,Pi)-chains
For (infinitary) constructor rewriting [30] we can delete all non-usable rules from R.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
PiDP
                    ↳ PiDPToQDPProof
              ↳ PiDP

Pi DP problem:
The TRS P consists of the following rules:

TIMES_IN_AAA(one(R), S, RSS) → TIMES_IN_AAA(R, S, RS)
TIMES_IN_AAA(zero(R), S, zero(RS)) → TIMES_IN_AAA(R, S, RS)

R is empty.
The argument filtering Pi contains the following mapping:
zero(x1)  =  zero(x1)
one(x1)  =  one(x1)
TIMES_IN_AAA(x1, x2, x3)  =  TIMES_IN_AAA

We have to consider all (P,R,Pi)-chains
Transforming (infinitary) constructor rewriting Pi-DP problem [30] into ordinary QDP problem [15] by application of Pi.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
                  ↳ PiDP
                    ↳ PiDPToQDPProof
QDP
                        ↳ NonTerminationProof
              ↳ PiDP

Q DP problem:
The TRS P consists of the following rules:

TIMES_IN_AAATIMES_IN_AAA

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.
We used the non-termination processor [17] to show that the DP problem is infinite.
Found a loop by semiunifying a rule from P directly.

The TRS P consists of the following rules:

TIMES_IN_AAATIMES_IN_AAA

The TRS R consists of the following rules:none


s = TIMES_IN_AAA evaluates to t =TIMES_IN_AAA

Thus s starts an infinite chain as s semiunifies with t with the following substitutions:




Rewriting sequence

The DP semiunifies directly so there is only one rewrite step from TIMES_IN_AAA to TIMES_IN_AAA.





↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
PiDP
                ↳ UsableRulesProof

Pi DP problem:
The TRS P consists of the following rules:

TIMES_IN_AAG(zero(R), S, zero(RS)) → TIMES_IN_AAG(R, S, RS)

The TRS R consists of the following rules:

times_in_aag(one(b), X, X) → times_out_aag(one(b), X, X)
times_in_aag(zero(R), S, zero(RS)) → U35_aag(R, S, RS, times_in_aag(R, S, RS))
times_in_aag(one(R), S, RSS) → U36_aag(R, S, RSS, times_in_aaa(R, S, RS))
times_in_aaa(one(b), X, X) → times_out_aaa(one(b), X, X)
times_in_aaa(zero(R), S, zero(RS)) → U35_aaa(R, S, RS, times_in_aaa(R, S, RS))
times_in_aaa(one(R), S, RSS) → U36_aaa(R, S, RSS, times_in_aaa(R, S, RS))
U36_aaa(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aaa(R, S, RSS, add_in_aaa(S, zero(RS), RSS))
add_in_aaa(b, b, b) → add_out_aaa(b, b, b)
add_in_aaa(X, b, X) → U1_aaa(X, binaryZ_in_a(X))
binaryZ_in_a(zero(X)) → U29_a(X, binaryZ_in_a(X))
binaryZ_in_a(one(X)) → U30_a(X, binary_in_a(X))
binary_in_a(b) → binary_out_a(b)
binary_in_a(zero(X)) → U27_a(X, binaryZ_in_a(X))
U27_a(X, binaryZ_out_a(X)) → binary_out_a(zero(X))
binary_in_a(one(X)) → U28_a(X, binary_in_a(X))
U28_a(X, binary_out_a(X)) → binary_out_a(one(X))
U30_a(X, binary_out_a(X)) → binaryZ_out_a(one(X))
U29_a(X, binaryZ_out_a(X)) → binaryZ_out_a(zero(X))
U1_aaa(X, binaryZ_out_a(X)) → add_out_aaa(X, b, X)
add_in_aaa(b, Y, Y) → U2_aaa(Y, binaryZ_in_a(Y))
U2_aaa(Y, binaryZ_out_a(Y)) → add_out_aaa(b, Y, Y)
add_in_aaa(X, Y, Z) → U3_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), zero(Y), zero(Z)) → U10_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(zero(X), one(Y), one(Z)) → U11_aaa(X, Y, Z, addx_in_aaa(X, Y, Z))
addx_in_aaa(one(X), b, one(X)) → U4_aaa(X, binary_in_a(X))
U4_aaa(X, binary_out_a(X)) → addx_out_aaa(one(X), b, one(X))
addx_in_aaa(zero(X), b, zero(X)) → U5_aaa(X, binaryZ_in_a(X))
U5_aaa(X, binaryZ_out_a(X)) → addx_out_aaa(zero(X), b, zero(X))
addx_in_aaa(X, Y, Z) → U6_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), zero(Y), one(Z)) → U12_aaa(X, Y, Z, addy_in_aaa(X, Y, Z))
addy_in_aaa(b, one(Y), one(Y)) → U7_aaa(Y, binary_in_a(Y))
U7_aaa(Y, binary_out_a(Y)) → addy_out_aaa(b, one(Y), one(Y))
addy_in_aaa(b, zero(Y), zero(Y)) → U8_aaa(Y, binaryZ_in_a(Y))
U8_aaa(Y, binaryZ_out_a(Y)) → addy_out_aaa(b, zero(Y), zero(Y))
addy_in_aaa(X, Y, Z) → U9_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
addz_in_aaa(one(X), one(Y), zero(Z)) → U13_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
addc_in_aaa(b, b, one(b)) → addc_out_aaa(b, b, one(b))
addc_in_aaa(X, b, Z) → U14_aaa(X, Z, succZ_in_aa(X, Z))
succZ_in_aa(zero(X), one(X)) → U33_aa(X, binaryZ_in_a(X))
U33_aa(X, binaryZ_out_a(X)) → succZ_out_aa(zero(X), one(X))
succZ_in_aa(one(X), zero(Z)) → U34_aa(X, Z, succ_in_aa(X, Z))
succ_in_aa(b, one(b)) → succ_out_aa(b, one(b))
succ_in_aa(zero(X), one(X)) → U31_aa(X, binaryZ_in_a(X))
U31_aa(X, binaryZ_out_a(X)) → succ_out_aa(zero(X), one(X))
succ_in_aa(one(X), zero(Z)) → U32_aa(X, Z, succ_in_aa(X, Z))
U32_aa(X, Z, succ_out_aa(X, Z)) → succ_out_aa(one(X), zero(Z))
U34_aa(X, Z, succ_out_aa(X, Z)) → succZ_out_aa(one(X), zero(Z))
U14_aaa(X, Z, succZ_out_aa(X, Z)) → addc_out_aaa(X, b, Z)
addc_in_aaa(b, Y, Z) → U15_aaa(Y, Z, succZ_in_aa(Y, Z))
U15_aaa(Y, Z, succZ_out_aa(Y, Z)) → addc_out_aaa(b, Y, Z)
addc_in_aaa(X, Y, Z) → U16_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(zero(X), zero(Y), one(Z)) → U23_aaa(X, Y, Z, addz_in_aaa(X, Y, Z))
U23_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), zero(Y), one(Z))
addC_in_aaa(zero(X), one(Y), zero(Z)) → U24_aaa(X, Y, Z, addX_in_aaa(X, Y, Z))
addX_in_aaa(zero(X), b, one(X)) → U17_aaa(X, binaryZ_in_a(X))
U17_aaa(X, binaryZ_out_a(X)) → addX_out_aaa(zero(X), b, one(X))
addX_in_aaa(one(X), b, zero(Z)) → U18_aaa(X, Z, succ_in_aa(X, Z))
U18_aaa(X, Z, succ_out_aa(X, Z)) → addX_out_aaa(one(X), b, zero(Z))
addX_in_aaa(X, Y, Z) → U19_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), zero(Y), zero(Z)) → U25_aaa(X, Y, Z, addY_in_aaa(X, Y, Z))
addY_in_aaa(b, zero(Y), one(Y)) → U20_aaa(Y, binaryZ_in_a(Y))
U20_aaa(Y, binaryZ_out_a(Y)) → addY_out_aaa(b, zero(Y), one(Y))
addY_in_aaa(b, one(Y), zero(Z)) → U21_aaa(Y, Z, succ_in_aa(Y, Z))
U21_aaa(Y, Z, succ_out_aa(Y, Z)) → addY_out_aaa(b, one(Y), zero(Z))
addY_in_aaa(X, Y, Z) → U22_aaa(X, Y, Z, addC_in_aaa(X, Y, Z))
addC_in_aaa(one(X), one(Y), one(Z)) → U26_aaa(X, Y, Z, addc_in_aaa(X, Y, Z))
U26_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), one(Y), one(Z))
U22_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addY_out_aaa(X, Y, Z)
U25_aaa(X, Y, Z, addY_out_aaa(X, Y, Z)) → addC_out_aaa(one(X), zero(Y), zero(Z))
U19_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addX_out_aaa(X, Y, Z)
U24_aaa(X, Y, Z, addX_out_aaa(X, Y, Z)) → addC_out_aaa(zero(X), one(Y), zero(Z))
U16_aaa(X, Y, Z, addC_out_aaa(X, Y, Z)) → addc_out_aaa(X, Y, Z)
U13_aaa(X, Y, Z, addc_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), one(Y), zero(Z))
U9_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addy_out_aaa(X, Y, Z)
U12_aaa(X, Y, Z, addy_out_aaa(X, Y, Z)) → addz_out_aaa(one(X), zero(Y), one(Z))
U6_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addx_out_aaa(X, Y, Z)
U11_aaa(X, Y, Z, addx_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), one(Y), one(Z))
U10_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → addz_out_aaa(zero(X), zero(Y), zero(Z))
U3_aaa(X, Y, Z, addz_out_aaa(X, Y, Z)) → add_out_aaa(X, Y, Z)
U37_aaa(R, S, RSS, add_out_aaa(S, zero(RS), RSS)) → times_out_aaa(one(R), S, RSS)
U35_aaa(R, S, RS, times_out_aaa(R, S, RS)) → times_out_aaa(zero(R), S, zero(RS))
U36_aag(R, S, RSS, times_out_aaa(R, S, RS)) → U37_aag(R, S, RSS, add_in_aag(S, zero(RS), RSS))
add_in_aag(b, b, b) → add_out_aag(b, b, b)
add_in_aag(X, b, X) → U1_aag(X, binaryZ_in_g(X))
binaryZ_in_g(zero(X)) → U29_g(X, binaryZ_in_g(X))
binaryZ_in_g(one(X)) → U30_g(X, binary_in_g(X))
binary_in_g(b) → binary_out_g(b)
binary_in_g(zero(X)) → U27_g(X, binaryZ_in_g(X))
U27_g(X, binaryZ_out_g(X)) → binary_out_g(zero(X))
binary_in_g(one(X)) → U28_g(X, binary_in_g(X))
U28_g(X, binary_out_g(X)) → binary_out_g(one(X))
U30_g(X, binary_out_g(X)) → binaryZ_out_g(one(X))
U29_g(X, binaryZ_out_g(X)) → binaryZ_out_g(zero(X))
U1_aag(X, binaryZ_out_g(X)) → add_out_aag(X, b, X)
add_in_aag(b, Y, Y) → U2_aag(Y, binaryZ_in_g(Y))
U2_aag(Y, binaryZ_out_g(Y)) → add_out_aag(b, Y, Y)
add_in_aag(X, Y, Z) → U3_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), zero(Y), zero(Z)) → U10_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(zero(X), one(Y), one(Z)) → U11_aag(X, Y, Z, addx_in_aag(X, Y, Z))
addx_in_aag(one(X), b, one(X)) → U4_aag(X, binary_in_g(X))
U4_aag(X, binary_out_g(X)) → addx_out_aag(one(X), b, one(X))
addx_in_aag(zero(X), b, zero(X)) → U5_aag(X, binaryZ_in_g(X))
U5_aag(X, binaryZ_out_g(X)) → addx_out_aag(zero(X), b, zero(X))
addx_in_aag(X, Y, Z) → U6_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), zero(Y), one(Z)) → U12_aag(X, Y, Z, addy_in_aag(X, Y, Z))
addy_in_aag(b, one(Y), one(Y)) → U7_aag(Y, binary_in_g(Y))
U7_aag(Y, binary_out_g(Y)) → addy_out_aag(b, one(Y), one(Y))
addy_in_aag(b, zero(Y), zero(Y)) → U8_aag(Y, binaryZ_in_g(Y))
U8_aag(Y, binaryZ_out_g(Y)) → addy_out_aag(b, zero(Y), zero(Y))
addy_in_aag(X, Y, Z) → U9_aag(X, Y, Z, addz_in_aag(X, Y, Z))
addz_in_aag(one(X), one(Y), zero(Z)) → U13_aag(X, Y, Z, addc_in_aag(X, Y, Z))
addc_in_aag(b, b, one(b)) → addc_out_aag(b, b, one(b))
addc_in_aag(X, b, Z) → U14_aag(X, Z, succZ_in_ag(X, Z))
succZ_in_ag(zero(X), one(X)) → U33_ag(X, binaryZ_in_g(X))
U33_ag(X, binaryZ_out_g(X)) → succZ_out_ag(zero(X), one(X))
succZ_in_ag(one(X), zero(Z)) → U34_ag(X, Z, succ_in_ag(X, Z))
succ_in_ag(b, one(b)) → succ_out_ag(b, one(b))
succ_in_ag(zero(X), one(X)) → U31_ag(X, binaryZ_in_g(X))
U31_ag(X, binaryZ_out_g(X)) → succ_out_ag(zero(X), one(X))
succ_in_ag(one(X), zero(Z)) → U32_ag(X, Z, succ_in_ag(X, Z))
U32_ag(X, Z, succ_out_ag(X, Z)) → succ_out_ag(one(X), zero(Z))
U34_ag(X, Z, succ_out_ag(X, Z)) → succZ_out_ag(one(X), zero(Z))
U14_aag(X, Z, succZ_out_ag(X, Z)) → addc_out_aag(X, b, Z)
addc_in_aag(b, Y, Z) → U15_aag(Y, Z, succZ_in_ag(Y, Z))
U15_aag(Y, Z, succZ_out_ag(Y, Z)) → addc_out_aag(b, Y, Z)
addc_in_aag(X, Y, Z) → U16_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(zero(X), zero(Y), one(Z)) → U23_aag(X, Y, Z, addz_in_aag(X, Y, Z))
U23_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addC_out_aag(zero(X), zero(Y), one(Z))
addC_in_aag(zero(X), one(Y), zero(Z)) → U24_aag(X, Y, Z, addX_in_aag(X, Y, Z))
addX_in_aag(zero(X), b, one(X)) → U17_aag(X, binaryZ_in_g(X))
U17_aag(X, binaryZ_out_g(X)) → addX_out_aag(zero(X), b, one(X))
addX_in_aag(one(X), b, zero(Z)) → U18_aag(X, Z, succ_in_ag(X, Z))
U18_aag(X, Z, succ_out_ag(X, Z)) → addX_out_aag(one(X), b, zero(Z))
addX_in_aag(X, Y, Z) → U19_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), zero(Y), zero(Z)) → U25_aag(X, Y, Z, addY_in_aag(X, Y, Z))
addY_in_aag(b, zero(Y), one(Y)) → U20_aag(Y, binaryZ_in_g(Y))
U20_aag(Y, binaryZ_out_g(Y)) → addY_out_aag(b, zero(Y), one(Y))
addY_in_aag(b, one(Y), zero(Z)) → U21_aag(Y, Z, succ_in_ag(Y, Z))
U21_aag(Y, Z, succ_out_ag(Y, Z)) → addY_out_aag(b, one(Y), zero(Z))
addY_in_aag(X, Y, Z) → U22_aag(X, Y, Z, addC_in_aag(X, Y, Z))
addC_in_aag(one(X), one(Y), one(Z)) → U26_aag(X, Y, Z, addc_in_aag(X, Y, Z))
U26_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addC_out_aag(one(X), one(Y), one(Z))
U22_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addY_out_aag(X, Y, Z)
U25_aag(X, Y, Z, addY_out_aag(X, Y, Z)) → addC_out_aag(one(X), zero(Y), zero(Z))
U19_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addX_out_aag(X, Y, Z)
U24_aag(X, Y, Z, addX_out_aag(X, Y, Z)) → addC_out_aag(zero(X), one(Y), zero(Z))
U16_aag(X, Y, Z, addC_out_aag(X, Y, Z)) → addc_out_aag(X, Y, Z)
U13_aag(X, Y, Z, addc_out_aag(X, Y, Z)) → addz_out_aag(one(X), one(Y), zero(Z))
U9_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addy_out_aag(X, Y, Z)
U12_aag(X, Y, Z, addy_out_aag(X, Y, Z)) → addz_out_aag(one(X), zero(Y), one(Z))
U6_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addx_out_aag(X, Y, Z)
U11_aag(X, Y, Z, addx_out_aag(X, Y, Z)) → addz_out_aag(zero(X), one(Y), one(Z))
U10_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → addz_out_aag(zero(X), zero(Y), zero(Z))
U3_aag(X, Y, Z, addz_out_aag(X, Y, Z)) → add_out_aag(X, Y, Z)
U37_aag(R, S, RSS, add_out_aag(S, zero(RS), RSS)) → times_out_aag(one(R), S, RSS)
U35_aag(R, S, RS, times_out_aag(R, S, RS)) → times_out_aag(zero(R), S, zero(RS))

The argument filtering Pi contains the following mapping:
times_in_aag(x1, x2, x3)  =  times_in_aag(x3)
times_out_aag(x1, x2, x3)  =  times_out_aag(x1, x2, x3)
zero(x1)  =  zero(x1)
U35_aag(x1, x2, x3, x4)  =  U35_aag(x3, x4)
U36_aag(x1, x2, x3, x4)  =  U36_aag(x3, x4)
times_in_aaa(x1, x2, x3)  =  times_in_aaa
times_out_aaa(x1, x2, x3)  =  times_out_aaa(x1)
U35_aaa(x1, x2, x3, x4)  =  U35_aaa(x4)
U36_aaa(x1, x2, x3, x4)  =  U36_aaa(x4)
U37_aaa(x1, x2, x3, x4)  =  U37_aaa(x1, x4)
add_in_aaa(x1, x2, x3)  =  add_in_aaa
add_out_aaa(x1, x2, x3)  =  add_out_aaa(x1, x2, x3)
U1_aaa(x1, x2)  =  U1_aaa(x2)
binaryZ_in_a(x1)  =  binaryZ_in_a
U29_a(x1, x2)  =  U29_a(x2)
U30_a(x1, x2)  =  U30_a(x2)
binary_in_a(x1)  =  binary_in_a
binary_out_a(x1)  =  binary_out_a(x1)
U27_a(x1, x2)  =  U27_a(x2)
binaryZ_out_a(x1)  =  binaryZ_out_a(x1)
U28_a(x1, x2)  =  U28_a(x2)
U2_aaa(x1, x2)  =  U2_aaa(x2)
U3_aaa(x1, x2, x3, x4)  =  U3_aaa(x4)
addz_in_aaa(x1, x2, x3)  =  addz_in_aaa
U10_aaa(x1, x2, x3, x4)  =  U10_aaa(x4)
U11_aaa(x1, x2, x3, x4)  =  U11_aaa(x4)
addx_in_aaa(x1, x2, x3)  =  addx_in_aaa
U4_aaa(x1, x2)  =  U4_aaa(x2)
addx_out_aaa(x1, x2, x3)  =  addx_out_aaa(x1, x2, x3)
U5_aaa(x1, x2)  =  U5_aaa(x2)
U6_aaa(x1, x2, x3, x4)  =  U6_aaa(x4)
U12_aaa(x1, x2, x3, x4)  =  U12_aaa(x4)
addy_in_aaa(x1, x2, x3)  =  addy_in_aaa
U7_aaa(x1, x2)  =  U7_aaa(x2)
addy_out_aaa(x1, x2, x3)  =  addy_out_aaa(x1, x2, x3)
U8_aaa(x1, x2)  =  U8_aaa(x2)
U9_aaa(x1, x2, x3, x4)  =  U9_aaa(x4)
U13_aaa(x1, x2, x3, x4)  =  U13_aaa(x4)
addc_in_aaa(x1, x2, x3)  =  addc_in_aaa
addc_out_aaa(x1, x2, x3)  =  addc_out_aaa(x1, x2, x3)
U14_aaa(x1, x2, x3)  =  U14_aaa(x3)
succZ_in_aa(x1, x2)  =  succZ_in_aa
U33_aa(x1, x2)  =  U33_aa(x2)
succZ_out_aa(x1, x2)  =  succZ_out_aa(x1, x2)
U34_aa(x1, x2, x3)  =  U34_aa(x3)
succ_in_aa(x1, x2)  =  succ_in_aa
succ_out_aa(x1, x2)  =  succ_out_aa(x1, x2)
U31_aa(x1, x2)  =  U31_aa(x2)
U32_aa(x1, x2, x3)  =  U32_aa(x3)
U15_aaa(x1, x2, x3)  =  U15_aaa(x3)
U16_aaa(x1, x2, x3, x4)  =  U16_aaa(x4)
addC_in_aaa(x1, x2, x3)  =  addC_in_aaa
U23_aaa(x1, x2, x3, x4)  =  U23_aaa(x4)
addz_out_aaa(x1, x2, x3)  =  addz_out_aaa(x1, x2, x3)
addC_out_aaa(x1, x2, x3)  =  addC_out_aaa(x1, x2, x3)
U24_aaa(x1, x2, x3, x4)  =  U24_aaa(x4)
addX_in_aaa(x1, x2, x3)  =  addX_in_aaa
U17_aaa(x1, x2)  =  U17_aaa(x2)
addX_out_aaa(x1, x2, x3)  =  addX_out_aaa(x1, x2, x3)
U18_aaa(x1, x2, x3)  =  U18_aaa(x3)
U19_aaa(x1, x2, x3, x4)  =  U19_aaa(x4)
U25_aaa(x1, x2, x3, x4)  =  U25_aaa(x4)
addY_in_aaa(x1, x2, x3)  =  addY_in_aaa
U20_aaa(x1, x2)  =  U20_aaa(x2)
addY_out_aaa(x1, x2, x3)  =  addY_out_aaa(x1, x2, x3)
U21_aaa(x1, x2, x3)  =  U21_aaa(x3)
U22_aaa(x1, x2, x3, x4)  =  U22_aaa(x4)
U26_aaa(x1, x2, x3, x4)  =  U26_aaa(x4)
U37_aag(x1, x2, x3, x4)  =  U37_aag(x1, x3, x4)
add_in_aag(x1, x2, x3)  =  add_in_aag(x3)
b  =  b
add_out_aag(x1, x2, x3)  =  add_out_aag(x1, x2, x3)
U1_aag(x1, x2)  =  U1_aag(x1, x2)
binaryZ_in_g(x1)  =  binaryZ_in_g(x1)
U29_g(x1, x2)  =  U29_g(x1, x2)
one(x1)  =  one(x1)
U30_g(x1, x2)  =  U30_g(x1, x2)
binary_in_g(x1)  =  binary_in_g(x1)
binary_out_g(x1)  =  binary_out_g(x1)
U27_g(x1, x2)  =  U27_g(x1, x2)
binaryZ_out_g(x1)  =  binaryZ_out_g(x1)
U28_g(x1, x2)  =  U28_g(x1, x2)
U2_aag(x1, x2)  =  U2_aag(x1, x2)
U3_aag(x1, x2, x3, x4)  =  U3_aag(x3, x4)
addz_in_aag(x1, x2, x3)  =  addz_in_aag(x3)
U10_aag(x1, x2, x3, x4)  =  U10_aag(x3, x4)
U11_aag(x1, x2, x3, x4)  =  U11_aag(x3, x4)
addx_in_aag(x1, x2, x3)  =  addx_in_aag(x3)
U4_aag(x1, x2)  =  U4_aag(x1, x2)
addx_out_aag(x1, x2, x3)  =  addx_out_aag(x1, x2, x3)
U5_aag(x1, x2)  =  U5_aag(x1, x2)
U6_aag(x1, x2, x3, x4)  =  U6_aag(x3, x4)
U12_aag(x1, x2, x3, x4)  =  U12_aag(x3, x4)
addy_in_aag(x1, x2, x3)  =  addy_in_aag(x3)
U7_aag(x1, x2)  =  U7_aag(x1, x2)
addy_out_aag(x1, x2, x3)  =  addy_out_aag(x1, x2, x3)
U8_aag(x1, x2)  =  U8_aag(x1, x2)
U9_aag(x1, x2, x3, x4)  =  U9_aag(x3, x4)
U13_aag(x1, x2, x3, x4)  =  U13_aag(x3, x4)
addc_in_aag(x1, x2, x3)  =  addc_in_aag(x3)
addc_out_aag(x1, x2, x3)  =  addc_out_aag(x1, x2, x3)
U14_aag(x1, x2, x3)  =  U14_aag(x2, x3)
succZ_in_ag(x1, x2)  =  succZ_in_ag(x2)
U33_ag(x1, x2)  =  U33_ag(x1, x2)
succZ_out_ag(x1, x2)  =  succZ_out_ag(x1, x2)
U34_ag(x1, x2, x3)  =  U34_ag(x2, x3)
succ_in_ag(x1, x2)  =  succ_in_ag(x2)
succ_out_ag(x1, x2)  =  succ_out_ag(x1, x2)
U31_ag(x1, x2)  =  U31_ag(x1, x2)
U32_ag(x1, x2, x3)  =  U32_ag(x2, x3)
U15_aag(x1, x2, x3)  =  U15_aag(x2, x3)
U16_aag(x1, x2, x3, x4)  =  U16_aag(x3, x4)
addC_in_aag(x1, x2, x3)  =  addC_in_aag(x3)
U23_aag(x1, x2, x3, x4)  =  U23_aag(x3, x4)
addz_out_aag(x1, x2, x3)  =  addz_out_aag(x1, x2, x3)
addC_out_aag(x1, x2, x3)  =  addC_out_aag(x1, x2, x3)
U24_aag(x1, x2, x3, x4)  =  U24_aag(x3, x4)
addX_in_aag(x1, x2, x3)  =  addX_in_aag(x3)
U17_aag(x1, x2)  =  U17_aag(x1, x2)
addX_out_aag(x1, x2, x3)  =  addX_out_aag(x1, x2, x3)
U18_aag(x1, x2, x3)  =  U18_aag(x2, x3)
U19_aag(x1, x2, x3, x4)  =  U19_aag(x3, x4)
U25_aag(x1, x2, x3, x4)  =  U25_aag(x3, x4)
addY_in_aag(x1, x2, x3)  =  addY_in_aag(x3)
U20_aag(x1, x2)  =  U20_aag(x1, x2)
addY_out_aag(x1, x2, x3)  =  addY_out_aag(x1, x2, x3)
U21_aag(x1, x2, x3)  =  U21_aag(x2, x3)
U22_aag(x1, x2, x3, x4)  =  U22_aag(x3, x4)
U26_aag(x1, x2, x3, x4)  =  U26_aag(x3, x4)
TIMES_IN_AAG(x1, x2, x3)  =  TIMES_IN_AAG(x3)

We have to consider all (P,R,Pi)-chains
For (infinitary) constructor rewriting [30] we can delete all non-usable rules from R.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
PiDP
                    ↳ PiDPToQDPProof

Pi DP problem:
The TRS P consists of the following rules:

TIMES_IN_AAG(zero(R), S, zero(RS)) → TIMES_IN_AAG(R, S, RS)

R is empty.
The argument filtering Pi contains the following mapping:
zero(x1)  =  zero(x1)
TIMES_IN_AAG(x1, x2, x3)  =  TIMES_IN_AAG(x3)

We have to consider all (P,R,Pi)-chains
Transforming (infinitary) constructor rewriting Pi-DP problem [30] into ordinary QDP problem [15] by application of Pi.

↳ Prolog
  ↳ PrologToPiTRSProof
  ↳ PrologToPiTRSProof
    ↳ PiTRS
      ↳ DependencyPairsProof
        ↳ PiDP
          ↳ DependencyGraphProof
            ↳ AND
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
              ↳ PiDP
                ↳ UsableRulesProof
                  ↳ PiDP
                    ↳ PiDPToQDPProof
QDP
                        ↳ QDPSizeChangeProof

Q DP problem:
The TRS P consists of the following rules:

TIMES_IN_AAG(zero(RS)) → TIMES_IN_AAG(RS)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs: